MFC异常处理之TRACE, ASSERT, VERIFY使用方法
2016-10-22 20:43
597 查看
TRACE
TRACE的接收方式类似于printf语句。TRACE中调用的语句仅在debug版的调试状态下出现,并在debug窗口中输出诊断信息。而在release版本中不计算传入的表达式。也就是说,Release版本中调用TRACE无效。示例
int nCount =9; CString strDesc("total"); TRACE("Count =%d,Description =%s\n",nCount,strDesc);
为了保证TRACE功能起作用,需要在TOOLS->MFC TRACER中选择 “ENABLE TRACING”,点击OK
ASSERT
ASSERT也接收一个表达式,如果这个表达式为TRUE,则无动作,否则中断当前程序执行。在debug版本下出现。对于系统中出现这个宏导致的中断,应该认为你的函数调用未能满足系统的调用此函数的前提条件。在Release版本中不计算传入的表达式。也就是说,Release版本中调用ASSERT无效。void foo( char p, int size ) { ASSERT( p != 0 ); //确认指针是有效的 ASSERT( size >= 100 ); //确认缓冲区至少有100个字节 // 后续处理 }
VERIFY
和ASSERT功能类似。所不同的是,在Release版本中,ASSERT不计算输入的表达式的值,而VERIFY计算表达式的值。ASSERT与VERIFY宏在Release模式下效果完全不一样。ASSERT不计算表达式的值,也不会输出诊断信息;VERIFY计算表达式的值,但不管值为0还是非0都不会输出诊断信息。void foo(char p, int size ) { char q; VERIFY(q = p); ASSERT((size 〉= 100); // 后续处理 }
总结
TRACE,ASSERT,VERIFY只在Debug版本中起作用。且TRACE,ASSERT,VERIFY仅仅在MFC中可用。除VERIFY在Release版本中计算表达式的值外,其他三个在Release版本中不计算表达式的值。相关文章推荐
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- 非mfc程序下使用TRACE,ASSERT,VERIFY
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- MFC程序中使用调试宏ASSERT()、ASSERT_VALID()、VERIFY()和TRACE()的区别
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- 使用SDK实现MFC模式的处理方法(一)
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(2):处理异步调用中的异常
- 使用MediaPlayer出现The surface has been released 异常处理方法,附代码
- javamail的使用时可能产生的一些异常及处理方法
- Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)
- VC++中使用MFC通过ADO连接数据库方法小结(不包括异常的捕捉
- VC调试方法大全-trace、assert、verify
- catch和throw同时使用---通过多个方法协作处理同一个异常
- mac下使用scrapy时出现的raise DistributionNotFound(req)异常的处理方法
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
- tomcat 7中使用DWR报出跨域安全异常处理方法