Eclipse-CDT能否无需调试程序即可查看反汇编并观察编译变更影响?
当然可以实现!Eclipse CDT完全能满足你的需求——不用启动调试器就能查看编译生成的汇编代码,还能轻松通过调整编译选项、修改C代码来对比不同情况下的汇编输出。下面是具体的操作步骤:
方法一:利用CDT的"Disassembly"视图(无需调试)
这个方法和你调试时用的视图是同一个,只是不需要启动调试会话:
- 首先确保你的项目已经成功编译(汇编是编译后的产物,没编译的话视图里是空的)。右键项目 →
Build Project完成编译。 - 打开Disassembly视图:点击顶部菜单栏的
Window→Show View→Other...,在弹出的窗口里找到Debug分类下的Disassembly,选中后打开。 - 关联源文件到视图:在Project Explorer里找到目标C源文件,右键 →
Open With→C/C++ Editor打开它。然后在Disassembly视图右上角,点击那个三点样式的下拉菜单,选择Show Source,这样就能像调试时一样,让源码和汇编代码同步对应显示。 - 查看汇编内容:此时Disassembly视图会自动加载当前源文件编译后的汇编指令,你可以直接浏览每一行C代码对应的汇编实现。
方法二:直接生成独立的汇编输出文件(方便对比)
如果需要保存汇编代码或者对比不同版本的差异,生成.s文件会更直观:
- 调整编译选项:右键项目 →
Properties→C/C++ Build→Settings。在Tool Settings标签页中,找到你的编译器(比如GCC C Compiler):- 在
Optimization选项里,直接选择-O0、-O1、-O2、-O3这些优化等级; - 如果只想生成汇编文件(不链接成可执行文件),可以在
Miscellaneous里添加编译选项-S;要是想保留所有编译中间文件(包括预处理后的代码、汇编),就加-save-temps。
- 在
- 重新编译项目:设置好选项后点击
Apply and Close,先右键项目 →Clean Project清理旧的编译产物,再Build Project重新编译。 - 查看汇编文件:编译完成后,在项目的
Debug或Release目录下,会生成和源文件同名、后缀为.s的汇编文件,双击就能在Eclipse里打开查看。
对比不同编译选项/代码的汇编变化
- 修改C代码或者调整编译选项后,重新编译,Disassembly视图会自动刷新(只要保持和源文件的关联);也可以直接打开新生成的
.s文件,和旧版本对比。 - 用Eclipse自带的对比功能更高效:右键旧的汇编文件 →
Compare With→Other Resource...,选择新生成的汇编文件,就能在对比视图里清晰看到两行代码的差异。
内容的提问来源于stack exchange,提问作者Trevor Boyd Smith
相关产品推荐
相关产品推荐

