c语言中几种输出调试信息的方法

c语言中几种输出调试信息的方法

ID:8905426

大小:13.74 KB

页数:8页

时间:2018-04-11

c语言中几种输出调试信息的方法_第1页
c语言中几种输出调试信息的方法_第2页
c语言中几种输出调试信息的方法_第3页
c语言中几种输出调试信息的方法_第4页
c语言中几种输出调试信息的方法_第5页
资源描述:

《c语言中几种输出调试信息的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在调试程序时,输出调试信息是一种普遍、有效的方法。输出调试信息一般有以下五种方法:方法一:直接使用屏幕打印函数printf。该方法直接在需要输出调试信息的位置使用函数printf输出相应的调试信息,以及某些关键变量的值。我们通过以下求阶层的函数fact来看看该方法的调试程序过程。 #include intfact(intn) {        inti,f=1;        for(i=1;i<=n;i++)        {                f+=i;        }        returnf; } intmain() {        p

2、rintf("4!=%d/n",fact(4));        return0; } 程序1:有bug的求阶层函数程序1编译运行的结果如下:4!=11结果错误。为了找到结果错误的原因,我们在语句"f+=i;"之后插入函数printf输出调试信息,如程序2。 #include intfact(intn) {        inti,f=1;        for(i=1;i<=n;i++)        {                f+=i;                printf("i=%d;f=%d/n",i,f);        }        

3、returnf; } intmain() {        printf("4!=%d/n",fact(4));        return0; } 程序2:加入函数printf输出调试信息的求阶层函数再编译运行该程序,屏幕输出如下:i=1;f=2i=2;f=4i=3;f=7i=4;f=114!=11原来语句"f+=i"错了,应该为"f*=i"。修改过来(见程序3),再编译运行,结果如下:i=1;f=1i=2;f=2i=3;f=6i=4;f=244!=24 #include intfact(intn) {        inti,f=1;        for(i

4、=1;i<=n;i++)        {                f*=i;                printf("i=%d;f=%d/n",i,f);        }        returnf; } intmain() {        printf("4!=%d/n",fact(4));        return0; } 程序3:修改正确的求阶层函数调试完成,bug找到,并修改正确。然后将加入的调试的函数printf删除或注释掉。该方法的缺点是(1)在正式发布的程序中需要去除或注释掉这些调试语句;(2)若程序又出现bug,则又需要重新插入函数printf

5、输出调试信息,造成工作的重复。方法二:自定义调试函数debug。为了避免方法一的缺点,可以利用条件编译技术,如程序4自定义调试函数debug。当程序正式发布的编译时取消宏定义__DEBUG__,在正式发布的程序中就不会输出调试信息。若又出现bug,只要重新在编译程序时定义宏__DEBUG__即可恢复原来的调试信息输出。可以在编写程序时就有目的事先插入些调试语句,这将有益于调试程序。另外,可以根据需要编写函数debug,将调试信息输出到除屏幕以外的其它地方,如文件或syslog服务器等。 #include  #ifdef__DEBUG__ #include

6、rg.h> voiddebug(constchar*fmt,...) {        va_listap;        va_start(ap,fmt);        vprintf(fmt,ap);        va_end(ap); } #else voiddebug(constchar*fmt,...) { } #endif  intfact(intn) {        inti,f=1;        for(i=1;i<=n;i++)        {                f*=i;                debug("i=%d;f=%d/n"

7、,i,f);        }        returnf; } intmain() {        printf("4!=%d/n",fact(4));        return0; } 程序4:自定义调试函数debug该方法的缺点是(1)调试信息要么全部输出,要么全不输出;(2)要重新输出调试信息时需要重新编译程序。方法三:含调试等级的自定义调试函数debug。可以继续改进方法,避免方法二中的缺点。我们可以根据调试信息的细节程度,将调试信息分成不同的等级。调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。