如何使用gdb生成函数的所有回溯?

时间:2015-10-12 19:48:17

标签: debugging unix gdb profiling backtrace

我有一个我想要检查的功能。我想找到这个函数的所有调用者,但是有一些问题:

  • 我这样做是为了理解代码,因为我没有写它,但我需要知道它的确切行为
  • 它预先通过STL,因此我不能只使用像callgrind这样的东西来获得它的直接来电者

有一个包含10多个函数调用的堆栈跟踪,直到您在STL中找到的实际代码,导致调用此函数。但是这些STL入口点会有所不同,因为它是compare函数,并且要求is_equal执行的序列与通过not_equal等的序列不同。我需要执行此操作至少10个不同的函数,我希望尽可能简化它。

我想要一个工具,每次调用该函数时都可以转储每个唯一的完整回溯。有人知道可以做到这一点的工具吗?

我在Ubuntu 14.04上使用gdb和c ++。

1 个答案:

答案 0 :(得分:2)

每次执行给定断点时,都可以使gdb执行一系列命令,例如,

break someFunction
commands
bt
continue
end

此功能在 gdb scripting: execute commands at selected breakpoint 中提及,其中包含指向gdb 5.1.7 Breakpoint Command Lists 的在线文档的链接