首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 别让优化搅乱你的代码
【标  题】:别让优化搅乱你的代码
【关键字】:
【来  源】:http://blog.csdn.net/myjpa/archive/2006/11/08/1373785.aspx

别让优化搅乱你的代码

最近在VS2005上作一个WindowsMobile5.0C++程序时,写了一个很简单的函数:包括一些变量声明,还有一个遍历链表查找的动作。就是这个小东西,让我大费周折了n个小时。

首先我发现函数的返回值不合理,于是在DEBUG模式下,单步跟踪。神奇的是,我在debug界面下,竟然完全看不到所有的局部变量,无法观察到他们的值。而且在一个传值的函数调用后,我传入的实参竟然被更改了!就好像这样:

int index=0;

fun(index);     
//fun()的参数是传值调用,不是传引用调用。

//这时竟然index!=0     L

 

我怀疑是不是指针没控制好,覆盖了这个值了,然而仔细检查过之后,又没有发现这方面的痕迹。于是我转而求教同事。同事不愧经验丰富,过了15分钟,跑过来对我无辜地说:“你把优化选项关闭就没问题了”。我愕然:“DEBUG下也可以开优化吗?”

然而事实证明了我的无知-_-!,我的项目不知什么时候设置成这样了。。。

当我改掉以后:

一切OK,局部变量也能观察了,程序逻辑也正确了。

通过这件事,我得到一个经验,以后发现程序逻辑执行异常或跟踪调试受阻时(因为编译器的优化,许多你写的代码在汇编中被移除了),检查一下是否开了优化,能省下不少精力。

 
名言警句(C语言版):【上一篇】
C++练习:已知三点,求过这三点的圆:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • struts 学习一(基础篇)
  • netstat 的-b 参数
  • E20系列测试仪表
  • 第一次接触Mysql数据库,所熟悉的基本命令
  • FW : DNS维护一点通
  • freebsd学习笔记(二)
  • VBS脚本病毒原理分析与防范(1)
  • 中华长城,国内外驰名商标
  • 免安装Java虚拟机之Java 5.0教程(一):第一杯咖啡
  • 3Com推出新型模块化接入点设备
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.