如何在调用 gdb 时打印感兴趣的函数,并根据它们在堆栈中的深度进行缩进?
我希望能够说类似(编造)的话:
(gdb) trace Foo* Bar* printf
并让 gdb 打印所有以 Foo 或 Bar 开头的函数,因为它们被称为。有点像 gnu cflow,除了使用调试符号并且只打印实际调用的函数,而不是所有可能的调用流。
无济于事的工具包括 cachegrind、callgrind 和 oprofile,它们对最常调用函数的结果进行排序。我需要保留调用顺序。
通配符(或等价物)是必不可少的,因为有很多 Foo 和 Bar 函数。虽然我会满足于记录每个功能。或者,也许告诉 gdb 记录特定库中的所有函数。
一些 GDB 向导必须有一个脚本来完成这个常见的工作!