GCC:编译成程序集并明确与代码的对应关系?

Posted

技术标签:

【中文标题】GCC:编译成程序集并明确与代码的对应关系?【英文标题】:GCC: Compile to assembly with clarified correspondence to code? 【发布时间】:2010-06-14 10:46:45 【问题描述】:

当您在 VS 中闯入调试器并打开反汇编窗口时,每个程序集片段都会显示在其对应的代码部分下方(或多或少)。带有 -S 的 GCC 仅输出精简后的程序集。

GCC 中是否有一个选项可以显示与原始代码的某些对应关系?

源代码是 C++。

【问题讨论】:

***.com/questions/1289881/… 【参考方案1】:

gcc -g编译你的代码,然后你可以用objdump -S yourfile反汇编。这会给你一个散布在源代码中的反汇编。

【讨论】:

【参考方案2】:

如果您询问调试,请在 gdb 中使用带有 /m(混合)标志的反汇编命令:

(gdb) disas /m main

假设代码可用并且您使用 -g 标志编译,将使用散布在汇编器中的 C++ 代码反汇编 main。

【讨论】:

【参考方案3】:

改为反汇编对象。 -S 通常给出的代码正是 gcc 为您的代码生成的代码,没有起始代码或链接器放在一起的其他内容。 补充:当然,在对象中包含调试信息会有很大帮助。

【讨论】:

【参考方案4】:
gcc yourFile.C -S -fverbose-asm

不完全是您要找的东西,但比没有更有用。

【讨论】:

以上是关于GCC:编译成程序集并明确与代码的对应关系?的主要内容,如果未能解决你的问题,请参考以下文章

编译汇编链接加载

使用 GCC 生成可读的程序集?

将程序集 .s 与 gcc 错误链接

如何使用gcc编译到程序集

gcc和arm-linux-gcc是啥关系?区别是啥?

C/C++语言编译生产可执行的二进制文件的过程??求大神详尽解释,