1

我正在尝试使用nm命令从目标文件中提取信息以进行某种静态代码分析,其中我必须计算 C 代码中声明的变量和函数的数量。我已经阅读了 GNU Binutils 的文档。我可以在返回的符号表中找到在全局范围内声明的变量,nm但我找不到在本地范围内声明的变量。这是为什么?我怎样才能访问它?

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

4

1 回答 1

2

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

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

于 2015-12-23T13:14:00.100 回答