几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » 程序设计 » vc编程
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2013-11-21, 01:31 PM   #1
huangyhg
超级版主
 
huangyhg的头像
 
注册日期: 04-03
帖子: 18592
精华: 36
现金: 249466 标准币
资产: 1080358888 标准币
huangyhg 向着好的方向发展
默认 如何:调试优化的代码

http://msdn.microsoft.com/zh-cn/lib...v=vs.90%29.aspx
当编译器优化代码时,它将重新定位并重组指令,以得到更高效的编译的代码。由于这种调整,调试器并不总能确定与一组指令对应的源代码。

优化可能影响到:
  • 本地变量(可被优化器移除或移动到调试器无法识别的位置)。
  • 函数内部的位置(当优化器合并代码块时发生变化的位置)。
  • 调用堆栈上框架的函数名称(如果优化器合并两个函数,则函数名称可能是错误的)。
但是,假定所有框架都有符号,则在调用堆栈上看到的框架几乎总是正确的。在下列情况下调用堆栈上的框架将是错误的:有堆栈损坏,有用汇编语言编写的函数,或者有操作系统框架在调用堆栈上没有匹配的符号。

全局和静态变量总是正确显示。结构布局也是这样。如果您有指向结构的指针而且指针的值是正确的,那么结构的每个成员变量都将显示正确值。

出于这些限制原因,只要有可能,就应使用程序的“未优化”版本进行调试。默认情况下,优化在 Visual C++ 程序的“Debug”配置中关闭,在“Release”配置中打开。

但有时,bug 可能仅在程序的优化版本中出现。在此情况下,必须调试优化的代码。

在“Debug”生成配置中打开优化
  1. 创建新项目时,请选择 Win32 Debug目标。接下来要一直使用 Win32Debug目标,直至程序已进行全面调试,可以生成 Win32 Release目标为止。调试器并不优化 Win32 Debug目标。
  2. 在解决方案资源管理器中选择项目。
  3. 在“视图”菜单上单击“属性页”。
  4. 在“属性页”对话框中,确保在“配置”下拉列表框中选择了“Debug”。
  5. 在左边的文件夹视图中,选择 C/C++ 文件夹。
  6. 在“C++”文件夹下选择“Optimization”。
  7. 在右边的属性列表中找到“Optimization”。它旁边的设置可能显示为“Disabled (/Od)”。选择其他选项(“Minimum Size(/O1)”、“Maximum Speed(/O2)”、“Full Optimization(/Ox)”或“Custom”)之一。
  8. 如果为“Optimization”选择了“Custom”选项,现在便可为属性列表中显示的其他任何属性设置选项。
调试优化的代码时,请查看“反汇编”窗口以了解实际创建和执行了哪些指令。设置断点时,需要注意断点可能随指令一起移动。例如,考虑以下代码:




for (x=0; x<10; x++)



假定在该行设置了一个断点。可能希望该断点被命中 10 次,但如果代码进行了优化,则只会命中该断点一次。其原因在于第一条指令将 x 的值设置为 0。编译器认定该指令只需执行一次,将其移出循环。断点随之移动。

而比较和递增 x 的指令仍留在循环内。当查看“反汇编”窗口时,“单步执行单元”自动设置为“指令”以允许更大控制,这在逐句通过优化的代码时很有用。
__________________
借用达朗贝尔的名言:前进吧,你会得到信心!
[url="http://www.dimcax.com"]几何尺寸与公差标准[/url]
huangyhg离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 02:18 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多