【问题标题】:What tools would people recommend for looking at gcc/linux object files? [closed]人们会推荐哪些工具来查看 gcc/linux 目标文件? [关闭]
【发布时间】:2011-04-04 15:51:17
【问题描述】:

想看一下linux上g++/gcc编译器生成的代码。我假设有一些工具可以对 .o 文件进行逆向工程,让我看看其中的内容比机器指令高一点吗? 我可能还缺少一个编译器选项,以便在编译目标文件之前简单地生成人类可读的东西?如果是这样,这个编译器选项是什么?

【问题讨论】:

  • 我相信 -S 是汇编语言输出的常用选项,它比 .o 文件对您有用得多。
  • 您在寻找什么? gcc 可以使用 -S 标志生成汇编输出,但您想要“更高级别”的东西?
  • 请记住,当您打开各种优化选项(即 -O1、-O2 等)时,要理解反汇编的意义要困难得多

标签: c++ c linux gcc g++


【解决方案1】:

你想要像 objdump(binutils 的一部分)这样的东西吗?这将为您反汇编代码,如果还有调试符号,它也会显示出来。

【讨论】:

  • 整个 binutils 工具包是你的朋友。您可以使用字符串在 .o 文件中搜索可打印字符串,并使用 nm 列出目标文件中的符号。
  • 对于 AT&T 语法讨厌者:objdump -M=intel-mnemonic,intel -r -d test.o 将使用英特尔风格的语法进行反汇编。出于某种原因,intel-mnemonicintel 都需要指定(尽管文档另有说明)。它还必须在 -d 选项之前。
【解决方案2】:

gcc 选项-S -fverbose-asm 使其输出带有cmets 注释的汇编语言。

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2010-09-18
    • 2010-09-21
    相关资源
    最近更新 更多