您的位置:首页 > 其它

如何用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
打断点
批量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gdb 批量 断点 打断点
相关文章推荐