如何在Code::Blocks中查看反汇编?

8
我读了一篇关于C/C++底层原理的文章this article,作者通过编译器生成的汇编代码逐行向我们展示。他使用的是VS 2010,而我使用的是Code::Blocks。我该如何在Code::Blocks中查看反汇编呢?当我进入调试器并点击反汇编时,它显示一个空白窗口...
这是我编译的整个C++ (.cpp)代码:
int main()
{
    int x = 1;
    int y = 2;
    int z = 0;

    z = x + y;

    return 0;
}

1
如果你只对汇编感兴趣,而不是特别关注 Code Blocks,你可以使用 gcc -S 命令,它会生成一个类似于 .s、.asm 的汇编文件。 - Pavan Manjunath
好的,我会启动Linux并这样做。但我想知道如何做到这一点。 - corazza
2个回答

10
作者在文章中展示的反汇编类型称为“交错反汇编”(C语言和反汇编交替),一些IDE(例如Visual Studio)支持。Code Blocks不支持,但是它有一个单独的反汇编窗口,如下所示:Diassembly Window选择源代码行。右键单击。选择“Run to Cursor”(运行到光标处)。现在选择“Debug-> Debugging Windows-> Disassembly”(调试->调试窗口->反汇编)。您也可以设置断点,然后执行此操作。但是,我的情况似乎不太顺利,因此我建议使用“Run to Cursor”的方法。希望这有所帮助。

1
好的。让我们从头开始同步。我从这里下载了Code Blocks - http://sourceforge.net/projects/codeblocks/files/Binaries/10.05/Windows/codeblocks-10.05mingw-setup.exe/download 文件->新建->项目->控制台应用程序->C++->输入项目标题->GNU GCC编译器->完成 现在,构建->构建。现在将光标放在main.cpp的第7行。右键单击并选择“运行到光标处”。现在会弹出一个窗口询问您是否要保存透视图。选择否!现在按照答案中所述操作即可。 - Pavan Manjunath
@Bane,我的最新评论有什么进展吗? - Pavan Manjunath
抱歉让你等待了,我一直在忙其他的事情。我按照你说的做了,现在我可以看到“运行到光标”命令。当我执行它时,会有一些东西开始发生,一个控制台窗口会短暂地弹出,但没有窗口询问我关于透视的问题。之后,我打开了反汇编,这就是我看到的:http://img651.imageshack.us/img651/1395/tse.png。 我没有下载和你相同的版本,但我认为这样的事情不应该有所不同。不过,我现在正在下载新版本以确保。 - corazza
1
断点是否被触发了?当断点被触发时,反汇编窗口应该自动填充。 - Pavan Manjunath
我认为你是在运行它而不是调试它。设置断点后(只需在任何一行上切换断点,新的断点将出现),现在选择“调试->开始”(F8快捷键)而不是“构建->运行”。现在断点肯定会触发,您将看到反汇编填充。 - Pavan Manjunath
显示剩余3条评论

4
这是对旧帖的新回答。另一个答案完全符合主题,但是有一个过时的陈述: “Code Blocks不支持_”……“交替反汇编(C和反汇编交替)”。
这已经不再正确。Code::Blocks的新版本已更新该功能。
使用Code::Blocks 17.12版本,gcc (tdm-1) 版本5.1.0和OP代码,并按照以下说明进行操作:
在Code::Blocks编辑器中,右键单击源文件中感兴趣的行,在弹出的上下文菜单中选择Run to cursor。在此示例中,选择了main函数的结束括号}。
然后,从标题栏菜单选择Debug->Debugging Windows-> Disassembly。这将导致一个弹出窗口显示与源代码交替的汇编代码。
这会产生下面的图片,清晰地显示了C源代码和汇编代码的交替:
参考链接:enter image description here

2
僵尸,僵尸 :) - Michael Dorgan
3
这首歌让我想起了一些过去的事情。请点击链接欣赏。 - Michael Dorgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接