Visual Studio如何反汇编Release版本

密斯刘 2011-02-18 05:01:57
Debug版本的下个断点调试,Alt+8快捷键就可以打开反汇编代码窗口了。
但是Release版本根本就不能调试啊,该如何查看程序的反汇编代码呢?
...全文
760 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2011-02-18
  • 打赏
  • 举报
回复
首先,彻底的release版本(VC默认)是无法进行源代码级别的调试的,即使从别的地方把pdb文件拷贝过来也没用。
如果想要进行源代码级别的调试,在生成release版本(dll, exe, ocx)时就要把一些调试信息build到dll/exe/ocx中,并让编译程序生成对应的pdb文件来保存详细的调试信息,有了这样的exe/dll及pdb、源文件,就可以进行调试了。具体的步骤如下:
1、 控制编译过程。VC->Project Settings-> C/C++ tab, General Category, Debug Info combo box, select Program Database. This setting will add the /Zi switch to your compiles. 不要选择 Program Database For Edit And Continue (/ZI),一般用不到。另外/Z7选项也可以,它跟/Zi的区别是/Z7 生成CodeView格式的调试信息,保存在obj文件中;/Zi 生成程序数据库格式的调试信息,保存在.PDB文件中。
2、 控制链接过程。VC->Project Settings->Link tab, General Category, check Generate Debug Info. This setting turns on the /DEBUG switch to the linker. 作为可选项也可以在链接选项中键入/OPT:REF,这个选项告诉链接器不要为那些没有被调用的函数生成调试信息.但是实际上这个选项是不必要的,因为对于dll来说我们链接时无法知道哪些会被调用.另外即使不加这个选项无非也就是使得编译出来的exe/dll大一点而已,一般来说不是问题.
有了调试信息,release版本跟debug版本的区别主要在于有没有进行优化.可能由于优化,release版本调试时源代码对不上当前执行状态,但是总比没有调试强.对于一个商业应用来说,尤其是客户那边出了问题就需要到客户那边调试的情况,特别需要release版本也带有调试信息.为了调试方便付出的代价就是生成的exe/dll比较大,这个代价是值得的.需要调试,把pdb文件和源代码拷贝带着就可以上路了.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/superdiablo/archive/2008/08/20/2800703.aspx
xiaohuh421 2011-02-18
  • 打赏
  • 举报
回复
调整预编译命令,使release版本程序可调试,就可以看到了
maoxing63570 2011-02-18
  • 打赏
  • 举报
回复
用OD,asm32看下

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧