《【教学课件】第7讲MFC程序调试.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7讲MFC程序调试.ppt(14页珍藏版)》请在三一办公上搜索。
1、各种调试方法,条件编译跟踪调试(Debug)异常处理机制MFC调试宏和成员函数,条件编译,#include#define PI 3.14159#define DEBUGvoid main()float r;cinr;#ifdef DEBUGcout r=rendl;#endifcout area=PI*r*rendl;,跟踪调试(Debug),将project设置成Win32 Debug利用Build/Debug/Go形式运行程序设置断点(breakpoint)设置观察点(watch)单步运行(step into,step over,step out)运行到光标处(run to cursor)
2、注意:在调试与视窗显示相关的错误时,不要使调试窗口与相关视窗重叠。,异常处理机制,分析程序运行时可能出现的异常情况除数为零内存空间不够文件无法打开数据类型错误制定相应的处理方法,异常处理机制,C+内嵌机制try,catch,throw语句用于处理异常情况(exception)将异常事件传递给专门的代码段处理,以使程序避免非正常运行或终止。具体使用方法:谭浩强编C+程序设计,异常处理机制举例1,try。if(div=0)throw Divisor cant be zero!;elsecoutnum/divendl;catch(char*str)cout Exception raised:str
3、n;,异常处理机制举例2,面向对象程序无异常处理机制有异常处理机制,MFC调试宏和成员函数,ASSERTASSERT_VALIDTRACECObject:Dump,调试宏:ASSERT,用于开发期间识别程序错误。ASSERT(表达式)ASSERT(div!=0);表达式结果为真,程序继续运行;表达式结果为假,程序终止运行,并弹出对话框,显示终止行及所在文件信息。,调试宏:ASSERT_VALID,用于检测对象的有效性。通过调用对象的AssertValid函数,判断对象内部数据的一致性。如将人的年龄限制在1150,否则被认为是非法数值。void CAge:AssertValid()const C
4、Object:AssertValid();ASSERT(m_years 0);ASSERT(m_years 105);,调试宏:TRACE,To print or display debugging messages from a program during development.Note:With 32-bit MFC,the only way to get debug output is via the debugger.,TRACE举例,To print a string argument to your debugger.int x=1;int y=16;float z=32.0;TRACE(This is a TRACE statementn);TRACE(The value of x is%dn,x);TRACE(x=%d y=%dn,x,y);TRACE(x=%d y=%x z=%fn,x,y,z);,调试成员函数:Dump,用于输出对象数据成员。XXX:Dump(CDumpContext,Dump举例,调用某对象的Dump成员函数:#ifdef _DEBUGxxx.Dump(afxDump);#endifafxDump为预定义的CDumpContext对象,