今天出现调试怪事儿,要不是总监有经验,估计我得捣腾半天了。因为工程移动了位置(拆了硬盘,盘符改了),调试时出现一个指针为空,但是TRACE()显示出来的地址却是有值的。工程.ncb文件中保留了一些历史信息,跟智能提示有关,但有时有可能会导致编译或调试错误。如果确信程序没有bug,不妨把这个删掉,再打开工程重新编译。
有时候连调试器都不能相信,真汗……,对总监再仰望三分,一上来就用TRACE。以前还没用过,搜集信息:
TRACE 宏有点象我们以前在C语言中用的Printf函数,使程序在运行过程中输出一些调试信息,使我们能了解程序的一些状态。但有一点不同的是:
TRACE 宏只有在调试状态下才有所输出,而以前用的Printf 函数在任何情况下都有输出。和Printf 函数一样,TRACE函数可以接受多个参数如:
int x = 1;
int y = 16;
float z = 32.0;
TRACE( "This is a TRACE statement\n" );
TRACE( "The value of x is %d\n", x );
TRACE( "&x = %p\n", &x);
TRACE( "x = %d and y = %x and z = %f\n", x, y, z );
要注意的是TRACE宏只对Debug 版本的工程产生作用,在Release 版本的工程中,TRACE宏将被忽略。Debug中,TRACE宏内容输出到VC的Output窗口。