如何用gdb在一个文件的全部函数上打断点?
2013-03-22 21:14
316 查看
如何用gdb在一个文件的全部函数上打断点?
1389Vstux8d0DBXpprTpWzPQo8yEora3knWIqk2MNoiGyS5ocMI
如何用gdb在一个文件的全部函数上打断点?
有的时候,想理清一个模块代码的执行顺序, 想要在该模块的每一个函数上打断点. 如果从源码中寻找每一个函数,在gdb里面打断点, 效率非常低下, 经过研究, 摸索出下面的方法.
1) 第一步, 编译源码为.o
这里以Doug Lea's malloc.c源码为例说明
malloc.c的源码下载:
http://gee.cs.oswego.edu/pub/misc/malloc.c
http://gee.cs.oswego.edu/pub/misc/malloc.h
2) 通过nm查看导出的全部函数符号, 然后把符号用\|连接起来
nm malloc.o | c++filt | grep -w -i T | awk '{print $3}' | tr '\n' ',' | sed 's/,/\\|/g'
结果如下:
add_segment\|bulk_free\|calloc\|change_mparam\|dispose_chunk\|free\|has_segment_link\|ialloc\|independent_calloc\|independent_comalloc\|init_bins\|init_mparams\|init_top\|internal_bulk_free\|internal_mallinfo\|internal_malloc_stats\|internal_memalign\|mallinfo\|malloc\|malloc_footprint\|malloc_footprint_limit\|malloc_max_footprint\|malloc_set_footprint_limit\|malloc_stats\|malloc_trim\|malloc_usable_size\|mallopt\|memalign\|mmap_alloc\|mmap_resize\|posix_memalign\|prepend_alloc\|pvalloc\|realloc\|realloc_in_place\|release_unused_segments\|segment_holding\|sys_alloc\|sys_trim\|tmalloc_large\|tmalloc_small\|try_realloc_chunk\|valloc\|
3) 进入gdb 调试你的程序, 执行下面命令
rb 上面的用\|串接起来的符号串
rb add_segment\|bulk_free\|calloc\|change_mparam\|dispose_chunk\|free\|has_segment_link\|ialloc\|independent_calloc\|independent_comalloc\|init_bins\|init_mparams\|init_top\|internal_bulk_free\|internal_mallinfo\|internal_malloc_stats\|internal_memalign\|mallinfo\|malloc\|malloc_footprint\|malloc_footprint_limit\|malloc_max_footprint\|malloc_set_footprint_limit\|malloc_stats\|malloc_trim\|malloc_usable_size\|mallopt\|memalign\|mmap_alloc\|mmap_resize\|posix_memalign\|prepend_alloc\|pvalloc\|realloc\|realloc_in_place\|release_unused_segments\|segment_holding\|sys_alloc\|sys_trim\|tmalloc_large\|tmalloc_small\|try_realloc_chunk\|valloc
说明: rb是使用正则的方式在所有匹配的符号上批量打断点.
效果如下: 本人很满意
1389Vstux8d0DBXpprTpWzPQo8yEora3knWIqk2MNoiGyS5ocMI
标签:gdb
打断点
批量
相关文章推荐
- rbreak 可以在一个文件的所有函数设置断点的GDB命令
- 如何使用gdb给某个模块(文件)的所有函数下断点
- rbreak 可以在一个文件的所有函数设置断点的GDB命令
- ctrl+左键点击一个函数名,跳转到另一个文件,如何返回原位置?
- 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组 -- 基于node的一个函数
- OpenResty如何在一个lua文件调用另一个lua文件的函数
- 如何使用VC++遍历某一个目录下的全部文件
- python 一个.py文件如何调用另一个.py文件中的类和函数
- 如何在LINUX下查看一个.o文件里有哪些函数
- 不是使用C/C++函数如何复制文件到另外一个目录
- 如何在后台CS代码文件中调用前台JS文件中的某一个函数
- 如何使用Fread和Fwrite写一个复制文件的函数
- ios中如何用一个格式获取多个文件目录中的全部文件
- 如果已经在一个类中定义了全局函数,在其它类文件中如何调用它?
- QT 如何实现使用 QPainter 的 drawPixmap() 函数将图片文件绘制到一个 QLabel、QPushButton 或者其他的一些设备上?
- matlab如何提取程序所依赖的所有自定义函数文件到一个文件夹中去
- 如何调用MFC中的函数打开一个系统资源面板,获取文件
- c++如何一个文件如何调用在同一个工程下的另一个文件的函数
- 程序由多个原文件组成,gdb时如何在指定的某个文件中设置断点?
- 如何在前台JS代码文件中调用后台CS文件中的某一个函数或控件?!