【发布时间】:2010-09-23 15:22:23
【问题描述】:
如何使 gdb 在调用时打印感兴趣的函数,根据它们在堆栈中的深度进行缩进?
我希望能够说出类似(编造)的话:
(gdb) trace Foo* Bar* printf
并让 gdb 打印所有以 Foo 或 Bar 开头的函数,因为它们被调用。有点像 gnu cflow,除了使用调试符号并且只打印实际调用的函数,而不是所有可能的调用流。
无法提供帮助的工具包括 cachegrind、callgrind 和 oprofile,它们对最常调用函数的结果进行排序。我需要保留调用顺序。
通配符(或等效的)是必不可少的,因为有很多 Foo 和 Bar funcs。虽然我会满足于记录每个功能。或者,也许告诉 gdb 记录特定库中的所有函数。
一些 GDB 向导必须有一个脚本来完成这个常见的工作!
【问题讨论】:
-
不将问题标记为“社区 wiki”可能会帮助您获得更多(和更好)的答案。
标签: c debugging dynamic gdb call-graph