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