【问题标题】:List of functions called till a breakpoint gdb在断点之前调用的函数列表 gdb
【发布时间】:2018-09-17 17:46:50
【问题描述】:

我正在使用 gdb 来跟踪程序的执行流程。我正在使用开源代码库并使用某些库函数来完成我的任务。我很想知道程序到达特定函数的路径,我在其中放置了一个断点。 gdb 中有没有办法列出断点到达之前调用的所有函数。我希望将一个字段添加到特定的数据结构中,并且只有在我知道要修改的数据结构在哪个确切函数中才能完成。

【问题讨论】:

  • 如果您担心代码正在通过一些别名访问结构的实例,这可能会使添加新元素变得困难,gdb 可以提供帮助的一种方法是使用watch -l 命令,该命令当结构占用的内存被读取或写入时将停止程序。

标签: gdb callstack


【解决方案1】:

我很想知道程序到达特定函数所采用的路径,我在其中放置了一个断点。

这可以通过在每个函数上设置断点来实现,例如 rbreak .,但对于比小玩具程序更大的任何东西来说,这不是一个可行的方法。

gdb 中有没有办法列出到达断点之前调用的所有函数。

没有。

我希望将一个字段添加到特定的数据结构中,并且只有在我知道要修改的数据结构在哪个确切函数中才能完成。

你拿错了。您正在尝试用 GDB 替换代码理解和索引工具,但 GDB 不是这样的工具。

此外,知道断点之前已调用的所有函数绝不会回答“哪些确切的函数修改了结构”——你会得到一个超集。该超集可能比您感兴趣的集大 1000 倍。

TL;DR:阅读源代码,使用有助于代码理解和索引的工具,不要尝试将 GDB 用作这样的工具(你会失败)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2016-06-18
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    相关资源
    最近更新 更多