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

How to generate all backtraces of a function using gdb?

我有一个正在尝试检查的函数。我想找到这个函数的所有调用者,但是有几个问题:

有 10 多个函数调用的堆栈跟踪,直到您到达导致调用此函数的 STL 中 而非 的实际代码。但是这些 STL 入口点各不相同,因为它是一个 compare 函数,对 is_equal 的调用与对 not_equal 的调用顺序不同,等等。我需要这样做至少有 10+ 不同的 功能,我想尽可能地简化它。

我想要一个工具,可以在每次调用函数时转储每个唯一的 完整 回溯。有人知道可以执行此操作的工具吗?

我在 Ubuntu 14.04.

上使用 gdb 和 c++

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

break someFunction
commands
bt
continue
end

gdb scripting: execute commands at selected breakpoint, which has a link to the online documentation for gdb 5.1.7 Breakpoint Command Lists

中提到了该功能