使用Visual C++调试器调试

有时程序能在调试版本运行但不能运行于发布版本,反之也有可能。一般说来,一个发布版本意味着某些类型的优化,而一个调试版本则没有优化。下面我们来看看它们的区别:

步骤/方法

  • 01

    特别针对调试版本的编译选项 /MDd,/MLd或者/MTd 调试版本的运行时刻库有调试符号,使用了调试堆,调试堆的目的是发现内存破坏和内存泄漏,并且向用户报告源代码的哪个地方出了问题。特性: .调试版本的运行时刻库对内存的分配作了跟踪,允许用户检查内存泄漏。 .在刚分配的内存里写上0xCD的字节模式,用0xCD来填充刚分配的内存,有助于发现数据未被初始化的错误。 .在被释放的内存写上0xDD的字节模式,有助于发现已被释放的内存。 .在缓冲区的两边分配了四字节的保护数据,并用0xFD的字节模式作初始化,来检查写内存的上溢出和下溢出。 .在每个内存分配的地方对源代码文件名和行号作了记录,有助于用户在源代码中对内存分配进行定位。

  • 02

    /Od 这个选项用来关闭优化开关。因为未被优化的代码直接对应于源代码,所以比优化后的代码更容易读懂。未被优化的代码编译和链接会更快,会有更短的调试周期。而由于优化,发布版本不见得会比调试版本运行得好,优化代码要求编译器做一些假设,去除冗余,但有时这个假设是错误的,并且去掉的冗余也有可能隐藏错误。如发布版本的帧指针(EBP寄存器)省略(FPO)隐藏了函数原型不匹配的错误;在同步异常模式(只能由throw语句抛出,编译器默认,由/GX编译选项设置)下,异常处理程序可能被优化掉,会阻止程序中的C++异常处理代码安全地捕获结构异常,在这种情况下,你必须使用异步异常模式(采取任何指令都会产生异常的机制,由/Eha编译选项设置)。

  • 03

    /D “_DEBUG” 打开条件编译调试代码开关。只有这个符号被定义,调试代码才会被编译,MFC使用_DEBUG符号来确定到底链接的是哪个版本的MFC类库。在调试版本中,内联默认情况下是被关闭的。

  • 04

    /ZI 创建编辑继续(Edit and Continue)的程序数据库。这个选项会打开/GF编译选项,/GF编译选项会消除重复字符串,并将字符串放到只读内存。编辑继续功能需要获取存储在PDB文件里的特殊信息来使得代码的修改对调试器有效。如果被修改文件对应的信息不在PDB文件里,编辑继续功能就不能进行,而且在调试过程中对代码的任何修改都会出现下面的提示信息“One or more files are out of date or do not exist.”。

  • 05

    /GZ 在调试版本中用来发现那些在发布版本里才发现的错误。其作用如下: .用0xCC模式初始化自动(本地)变量。 .在通过函数指针调用函数时,检查栈指针,确认是否有调用规则不匹配。 .在函数最后检查栈指针是否被改变。

  • 06

    /Gm 打开最小化重新链接开关,减少链接时间。

(0)

相关推荐

  • Visual Studio 2005实时调试器关闭后还一直弹的解决办法

    报错信息:事件类型: 信息 事件来源: Application Popup 事件种类: 无 事件 ID: 26 日期: 2011-9-5 事件: 10:42:13 用户: N/A 计算机: USER- ...

  • Visual Studio无法启动调试,拒绝访问

    当同学们在Visual Studio 上编写完代码时候,诶.发现代码完全正确,但是无法运行调试,提示你拒绝访问.但是启动不调试就可以运行程序.这种问题给大家提供几种解决方案,只供参考! 操作方法 01 ...

  • 怎样在XP系统中关闭调试器

    很多windows xp系统用户,尤其是年轻一代的用户,都喜欢玩网络游戏,玩游戏的时候最怕突然电脑出现问题,有用户反映,在玩游戏的关键时刻突然出现一个:“检测到调试器正在运行中,这可能会影响到游戏的正 ...

  • xp系统如何关闭调试器的具体教程

    我们身边使用xp系统电脑的人很多,大家在使用的时候常常都不知道电脑中的很多应用是怎么使用的,不如说我们电脑中的调试器就不是特别的书序,这个软件其实是用来维护和修正错误的一个很重要的功能,如果我们的笔记 ...

  • XP系统实时调试实时调试器老是跳出来怎么办

    XP系统实时调试实时调试器老是跳出来怎么办 1.打开浏览器,点击菜单栏的"工具",打开"Internet选项"; 2.切换'高级'选项卡; 3.往下滚动,勾选& ...

  • XP系统下关闭不了调试器怎么解决

    XP系统下关闭不了调试器的解决办法 具体如下: 1.鼠标点击xp系统"开始"菜单,选择"运行"选项; 2.在弹出的运行对话框中输入"regedit&q ...

  • WinXP系统如何关闭实时调试器

    最近有winxp用户反映,电脑老是弹出“实时调试”的窗口,关闭了还会弹出来,而且在使用浏览器的时候也会弹出,让用户很烦恼,下面小编就为大家讲解如何解决这样的问题,需要的朋友快乐看看吧. 方法有以上两种 ...

  • OD调试器的简单使用方法

    对于初级入门破解的朋友们来说使用od调试器还比较生涩.今天我给大家讲讲od调试器的简单使用方法. 操作方法 01 从图中可以看到od有四个主要的工作窗口.我们学习破解最主要的还是要看反汇编窗口. 02 ...

  • 上网弹出一个实时调试的窗口,请选择一个调试器

    最近小编在浏览网页的时候,弹出了一个实时调试的窗口,提示我们设置默认的调试器,这通常和我们的电脑服务异常,以及网页调试程序有关系,今天小编就为大家分享下具体的解决办法,希望对大家有所帮助. 操作方法 ...