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

标签 c gdb global-variables lldb static-variables

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

我不认为 gdb 或 lldb 提供了这样一个开箱即用的功能。有没有其他工具可以做到这一点?

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

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

最佳答案

要回答问题的“替代”部分,lldb 不支持软件实现的观察点,因为它们实际上工作得不是很好。所以像 gdb 一样,我们受限于您正在运行的机器的硬件资源。但是,除非您要观察的全局变量非常大,否则您应该能够将观察点一个一个地放置在它们上面。

当然,调试器只能告诉您谁访问了在调试 session 期间实际运行的代码中的监视数据。因此,如果您想对整个程序有一个全面的答案,调试器不是合适的工具。

关于c - 如何知道哪些函数引用了哪些全局变量或静态变量? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54116157/

相关文章:

c - unix中的线程通信

c - libpcap - pcap_findalldevs 在 MacOSx 上返回 NULL

c - 如何在 C 语言中使用 printf,我的代码应该打印出什么?

assembly - 二元炸弹 - 第 4 阶段

c - 接收到的信号 SIGSEGV 出现段错误

C --- 全局变量的声明(重定义)问题

javascript - 在后续函数中保留变量的值

c - 在通过 execv 执行的子进程中使用 Scanf() 不起作用

python - 从Python函数内部访问全局变量

gdb 在山狮上失败