我正在使用gdb来跟踪程序的执行流程。我正在使用开源代码库并使用某些库函数来完成我的任务。我有兴趣知道程序到达特定函数所需的路径,我在其中放置了一个断点。在gdb中是否有一种方法可以列出在到达断点之前调用的所有函数。我希望在特定的数据结构中添加一个字段,只有当我知道要修改的数据结构的确切函数时才能完成。
答案 0 :(得分:0)
我很想知道程序到达特定函数的路径,我在这里放置了一个断点。
这可以通过在每个函数上设置一个断点来实现,例如rbreak .
,但对于任何比小玩具程序更大的东西都不是一个可行的方法。
gdb中是否有一种方法可以列出在到达断点之前调用的所有函数。
没有
我希望在特定的数据结构中添加一个字段,只有当我知道要修改的数据结构的确切函数时才能完成。
你错了。您正试图用GDB替换代码理解和索引工具,但GDB 不是这样的工具。
此外,知道在断点之前调用的所有函数决不会回答“哪些精确函数修改了结构” - 而是获得超集。该超集可能比您感兴趣的集合大1000倍。
TL; DR:阅读源代码,使用有助于代码理解和索引的工具,不要试图将GDB用作这样的工具(你会失败)。