【问题标题】:How to generate all backtraces of a function using gdb?如何使用 gdb 生成函数的所有回溯?
【发布时间】:2015-10-12 19:48:16
【问题描述】:

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

  • 我这样做是为了理解代码,因为我没有编写它,但我需要确切知道它的行为方式
  • 它预先通过 STL,所以我不能只使用 callgrind 之类的东西来获取它的直接调用者

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

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

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

【问题讨论】:

    标签: debugging unix gdb profiling backtrace


    【解决方案1】:

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

    break someFunction
    commands
    bt
    continue
    end
    

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

    【讨论】:

    • 很好的答案,我从来不知道它存在。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    相关资源
    最近更新 更多