使用`nm`命令列出局部变量

时间:2015-12-23 11:17:41

标签: gcc code-analysis static-code-analysis nm symbol-table

我试图用nm命令从目标文件中提取信息,用于某种静态代码分析,其中我必须计算C代码中声明的变量和函数的数量。我已经浏览了GNU Binutils的documentation。我可以在nm返回的符号表中找到在全局范围内声明的变量,但是我找不到那些在本地范围内声明的变量。这是为什么?我该如何访问它?

nm之外,还有什么方法可以提取我想要的信息。作为编译器,gcc应该生成一个符号表供其使用。我可以通过任何gcc命令访问它吗?

1 个答案:

答案 0 :(得分:2)

您无法从目标文件访问本地变量,因为gcc不会保存有关它的信息。您只能使用nm来列出目标文件的符号表。这些符号表用于链接。链接时间不需要局部变量。结构和类的非静态字段。

为了查看局部变量,gcc可以编译带有特殊调试信息的程序。但是对于静态分析的目的,你应该分析对象文件中的源代码或机器代码。