当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2012-03-13 17:33:00  来源:本站整理

利用Visual C++调试器调试[VC/C++编程]

赞助商链接



  本文“利用Visual C++调试器调试[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  有时程序能在调试版本运行但不能运行于公布版本,反之也有大概.普通说来,一个公布版本意味着某些范例的优化,而一个调试版本则没有优化.下面我们来看看它们的辨别:

  步骤/办法

  分外针对换试版本的编译选项

  /MDd,/MLd大概/MTd

  调试版本的运行时刻库有调试标记,利用了调试堆,调试堆的目的是发现内存破坏和内存泄露,并且向用户报告源代码的哪个地方出了问题.特点:

  .调试版本的运行时刻库对内存的分配作了跟踪,答应用户查抄内存泄露.

  .在刚分配的内存里写上0xCD的字节情势,用0xCD来填充刚分配的内存,有助于发现数据未被初始化的错误.

  .在被释放的内存写上0xDD的字节情势,有助于发现已被释放的内存.

  .在缓冲区的两边分配了四字节的保护数据,并用0xFD的字节情势作初始化,来查抄写内存的上溢出和下溢出.

.在每个内存分配的地方对源代码文件名和行号作了记录,有助于用户在源代码中对内存分配举行定位.

  /Od

这个选项用来关闭优化开关.因为未被优化的代码直接对应于源代码,所以比优化后的代码更简单读懂.未被优化的代码编译和链接会更快,会有更短的调试周期.而由于优化,公布版本不见得会比调试版本运行得好,优化代码要求编译器做一些假定,去除冗余,但有时这个假定是错误的,并且去掉的冗余也有大概躲藏错误.如公布版本的帧指针(EBP存放器)省略(FPO)躲藏了函数原型不匹配的错误;在同步非常情势(只能由throw语句抛出,编译器默许,由/GX编译选项设置)下,非常处理程序大概被优化掉,会禁止程序中的C++非常处理代码安全地捕捉构造非常,在这种情形下,你必须利用异步非常情势(采纳任何指令城市产生非常的机制,由/Eha编译选项设置).

  /D “_DEBUG”

翻开条件编译调试代码开关.只有这个标记被定义,调试代码才会被编译,MFC利用_DEBUG标记来肯定到底链接的是哪个版本的MFC类库.在调试版本中,内联默许情形下是被关闭的.

  /ZI

成立编辑持续(Edit and Continue)的程序数据库.这个选项会翻开/GF编译选项,/GF编译选项会消除反复字符串,并将字符串放到只读内存.编辑持续功效需求获得存储在 PDB文件里的特别信息来使得代码的改正对换试器有效.假如被改正文件对应的信息不在PDB文件里,编辑持续功效就不能举行,并且在调试历程中对代码的任何改正城市呈现下面的提醒信息“One or more files are out of date or do not exist.”.

  /GZ

  在调试版本顶用来发现那些在公布版本里才发现的错误.其作用以下:

  .用0xCC情势初始化自动(本地)变量.

  .在通过函数指针调用函数时,查抄栈指针,确认能否有调用法则不匹配.

.在函数最后查抄栈指针能否被改变.

  /Gm

  翻开最小化重新链接开关,削减链接时间.


  以上是“利用Visual C++调试器调试[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Ubuntu下利用VI编辑文件必知的常用号令
  • 利用Visual C++编程获得CPU信息
  • 利用Visual C++调试器调试
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .