Visual C++调试宏概述
来源:互联网 发布:成塔软件怎么样? 编辑:程序博客网 时间:2024/06/02 03:15
拜读朱敏娜老师等编写的书籍,觉得很有用,总结一下。详细的操作还要再研究。
Visual C++提供的用于调试的宏有ASSERT、ASSERT_KINDOF、 ASSERT_VALID、 DEBUG_NEW 、 TRACE 、 VERIFY。
1.ASSERT和ASSERT_VALID宏
在调试时,可以利用宏ASSERT和ASSERT_VALID来设定断言。
宏ASSERT的原型如下:
ASSERT(Boolean Expression);
参数Expression是一个逻辑表达式。在程序运行过程中,若逻辑表达式为TRUE,则一切运行正常。若该表达式的值为FALSE,程序会停止运行并且系统会弹出一个警告对话框。
在警告对话框中提示了程序错误所在,并且终止、重试和忽略3个按钮提示。若选择终止按钮,系统将停止程序的调试进程。若选择重试按钮,系统将调用函数AfxDebugBreak(),并激活调试器,显示出断言失败的代码。若选择忽略按钮,系统将会忽略该错误,继续运行程序。ASSERT宏只在Debug模式下起作用,在Release模式下将被忽略。
宏ASSERT_VALID可用来确认CObject的派生类对象是否是有效对象:
原型如下:ASSERT_VALID(pObject);
参数pObject是一个对象指针。ASSERT_VALID在release模式下不起作用,在debug模式下,如果对象指针为NULL,vc++会调用对象其成员函数AssertValid()检测。当所有的检测都失败了,将会弹出和ASSERT一样的警告对话框。
2.TRACE宏
TRACE宏用于程序在DEBUG模式下运行,输出一些调试信息,使用方法类似于C的prinf函数。开发人员可以在程序不同地方添加TRACE宏,从而了解程序的一些运行状态,如某函数或代码有没有被执行。其具体应用如下:
int x=1;int y=2;float z=3.0;TRACE("x=%d\n",x);TRACE("x=%d and y=%d\n",x,y);TRACE("x=%d and y=%d and z=%f\n",z,y,z);当选择了debug目标,并且afxTraceEnable变量被置为TRUE时,TRACE宏也就随之被激活了。但在程序的Release版本中将完全被禁止。
3.VERIFY宏
原型如下:
VERIFY(Boolean Expression);
参数Expression是一个表达式货真指针。在Debug模式下,VERIFY宏检测其参数。当表达式的值为0时,终止程序运行并弹出“Debug Assertion Failed”对话框,给出诊断信息。如果表达式的值为非零,程序正常运行。
与其他宏不同的是,在RELEASE模式下,VERIFY宏仍然起作用。但当参数表达式的值为零时,并不弹出“Debug Assertion Failed”对话框,也不终止程序的运行。
在DEBUG模式下,用VERIFY宏来检测函数的返回值。如下代码所示:
HDC hdc;VERIFY((hdc=::GetDC(NULL))!=NULL);当GetDC(NULL)的返回值为NULL时,终止程序的运行并弹出“Debug Assertion Failed”对话框。
- Visual C++调试宏概述
- visual studio code c调试
- 【c#】c#的调试(visual studio)
- Visual Studio调试dump文件(Windows/C/C++)
- Visual C 开发工具与调试技巧整理
- Visual C 开发工具与调试技巧整理
- Visual Studio 2005(c#)项目调试问题解决方案集锦
- visual+c+++2010环境下调试并行开发程序
- 【Visual C++】一些开发心得与调试技巧
- 【Visual C++】一些开发心得与调试技巧
- visual studio 2010怎么编写运行调试C程序
- 【Visual C++】一些开发心得与调试技巧
- 【Visual C++】一些开发心得与调试技巧
- visual studio 的10个调试技巧(c++)
- 在Visual Studio 2008上调试C语言程序
- 【Visual C++】一些开发心得与调试技巧
- 如何在visual c++ 6.0下调试c语言
- 【Visual C++】一些开发心得与调试技巧
- 网址索引
- 贝儿的伤感爱情空间日志发布:宝贝,快回头吧,我等你
- Core Data 编程指南2
- Core Data 编程指南1
- Interpolator 的使用 加速方式
- Visual C++调试宏概述
- 喜欢的歌、静静地听。喜欢的人、远远的看
- 输入验证——气泡提示
- /etc/inittab详解
- [SGU]133. Border
- Cocos2d-x 2.0.1 运行在MFC中的一种方法
- Codeblocks和gdb调试
- html浮动元素
- Session小结