我想知道在从 C 编译的可执行文件中哪些函数引用(读取或写入)全局或静态变量。
我不认为 gdb 或 lldb 提供了这样一个开箱即用的功能。有没有其他工具可以做到这一点?
或者,可以从 gdb/lldb 获取所有全局变量和静态变量,并在每个变量上设置一个观察点。然而,gdb 似乎无法允许仅软观察点进行读取,因为这将需要大量硬件观察点无法做到的观察点。所以我假设 gdb 不适合知道哪些函数引用哪些全局/静态变量。
lldb 适合这个任务吗?是否有现成的解决方案?
最佳答案
要回答问题的“替代”部分,lldb 不支持软件实现的观察点,因为它们实际上工作得不是很好。所以像 gdb 一样,我们受限于您正在运行的机器的硬件资源。但是,除非您要观察的全局变量非常大,否则您应该能够将观察点一个一个地放置在它们上面。
当然,调试器只能告诉您谁访问了在调试 session 期间实际运行的代码中的监视数据。因此,如果您想对整个程序有一个全面的答案,调试器不是合适的工具。
关于c - 如何知道哪些函数引用了哪些全局变量或静态变量? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54116157/