【问题标题】:Listing local variables with `nm` command使用 `nm` 命令列出局部变量
【发布时间】:2015-12-23 11:17:41
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 有没有办法用 gcc 编译,这样可以查看局部变量?
    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2014-09-05
    • 2012-12-28
    相关资源
    最近更新 更多