使用 `nm` 命令列出局部变量
Posted
技术标签:
【中文标题】使用 `nm` 命令列出局部变量【英文标题】:Listing local variables with `nm` command 【发布时间】:2015-12-23 11:17:41 【问题描述】:我正在尝试使用nm
命令从目标文件中提取信息以进行某种静态代码分析,其中我必须计算 C 代码中声明的变量和函数的数量。我已经通过了 GNU Binutils 的documentation。我可以在nm
返回的符号表中找到在全局范围内声明的变量,但我找不到在本地范围内声明的变量。这是为什么?如何访问它?
除了nm
之外,还有什么方法可以提取我想要的信息。作为编译器,gcc 应该生成一个符号表供其使用。我可以通过任何 gcc 命令访问它吗?
【问题讨论】:
【参考方案1】:您不能从目标文件访问局部变量,因为 gcc 不保存有关它的信息。您只能使用 nm 列出目标文件的符号表。这些符号表用于链接。链接时不需要局部变量。结构和类的非静态字段也是如此。
为了查看局部变量,gcc 可以编译带有特殊调试信息的程序。但是对于静态分析的目的,您应该分析目标文件中的源代码或机器代码。
【讨论】:
有没有办法用 gcc 编译,这样可以查看局部变量?以上是关于使用 `nm` 命令列出局部变量的主要内容,如果未能解决你的问题,请参考以下文章