如何知道哪些全局变量或静态变量由哪些函数引用? (C)

时间:2019-01-09 18:21:30

标签: c gdb global-variables lldb static-variables

我想知道在C语言编译的可执行文件中,哪些函数引用(读或写)全局或静态变量。

我认为gdb或lldb不能立即提供这样的功能。还有其他工具可以做到这一点吗?

或者,可以从gdb / lldb获取所有全局和静态变量,并在每个变量上设置观察点。但是,gdb似乎无法允许仅软监视点进行读取,因为这将需要大量监视点,而硬件监视点则无法做到这一点。因此,我认为gdb不适合知道哪些函数引用哪些全局/静态变量。

lldb是否适合此任务?有现成的解决方案吗?

1 个答案:

答案 0 :(得分:0)

要回答问题的“替代”部分,lldb不支持软件实现的观察点,因为它们实际上不能很好地工作。因此,像gdb一样,我们仅限于运行计算机的硬件资源。除非您要监视的全局变量真的很大,否则您应该能够将监视点一一列出。

当然,调试器将只能告诉您谁访问了在调试会话期间实际运行的代码中的监视数据。因此,如果您想为整个程序提供一个全面的答案,则调试器不是正确的工具。