C语言中几种输出调试信息的方法_第1页
C语言中几种输出调试信息的方法_第2页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

个人收集整理-ZQC语言中几种输出调试信息的方法在调试程序时,输出调试信息是一种普遍、有效的方法。输出调试信息一般有以下五种方法:方法一:直接使用屏幕打印函数。该方法直接在需要输出调试信息的位置使用函数输出相应的调试信息,以及某些关键变量的值。我们通过以下求阶层的函数来看看该方法的调试程序过程。b5E2R。b5E2R。 ( ) ; ( ; ; ) ; ; () ( , () ); ;程序: 有的求阶层函数p1Ean。p1Ean。程序编译运行的结果如下:结果错误。为了找到结果错误的原因,我们在语句 ;之后插入函数输出调试信息,如程序。 ( ) ; ( ; ; ) ; ( ; , , ); ; () ( , () ); ;程序: 加入函数输出调试信息的求阶层函数DXDiT。DXDiT。再编译运行该程序,屏幕输出如下: ; ; ; ; 原来语句 错了,应该为 *。修改过来(见程序),再编译运行,结果如下: ; ; ; ; ( ) ; ( ; ; ) * ; ( ; , , ); ; () ( , () ); ;程序: 修改正确的求阶层函数RTCrp。RTCrp。调试完成,找到,并修改正确。然后将加入的调试的函数 删除或注释掉。该方法的缺点是()在正式发布的程序中需要去除或注释掉这些调试语句;()若程序又出现,则又需要重新插入函数输出调试信息,造成工作的重复。5PCzV。5PCzV。方法二:自定义调试函数。为了避免方法一的缺点,可以利用条件编译技术,如程序自定义调试函数。当程序正式发布的编译时取消宏定义,在正式发布的程序中就不会输出调试信息。若又出现,只要重新在编译程序时定义宏即可恢复原来的调试信息输出。可以在编写程序时就有目的事先插入些调试语句,这将有益于调试程序。另外,可以根据需要编写函数,将调试信息输出到除屏幕以外的其它地方,如文件或服务器等。jLBHr。jLBHr。 ( *, .) ; (, ); (, ); (); ( *, .) ( ) , ; ( ; ; ) * ; ( ; , , ); ; () ( , () ); ;程序: 自定义调试函数xHAQX。xHAQX。该方法的缺点是()调试信息要么全部输出,要么全不输出;()要重新输出调试信息时需要重新编译程序。方法三:含调试等级的自定义调试函数。可以继续改进方法,避免方法二中的缺点。我们可以根据调试信息的细节程度,将调试信息分成不同的等级。调试信息的等级必须大于,若调试信息细节程度越高,则等级越高。在输出调试信息时,若调试等级高于调试信息等级才输出调试信息,否则忽略该调试信息,如程序。当调试等级为时,则不输出任何调试信息。LDAYt。LDAYt。 * () * ; ( , *, .) ( ) ; (, ); (, ); (); ( ) , ; ( ; ; ) * ; (, ; , , ); ; ( , *) ( ) ; (); ( , () ); ;程序: 含调试等级的自定义调试函数Zzz6Z。Zzz6Z。用命令 编译程序,得到可执行文件 。若需要输出调试信息,只需要指定调试等级不低于即可,如运行命令 ,否则将不会输出调试信息。dvzfv。dvzfv。这样,在正式发布版中包含调试信息也无伤大雅了,因为只需将调试等级配置为,将不会出现任何调试信息。该方法的缺点是效率不太高,因为不管调试信息是否需要输出,都会进行一次函数调用。若不需要输出调试信息,这次函数调用就多余了。rqyn1。rqyn1。方法四:调试等级的判断放在自定义调试函数之外。为了减少不必要的函数调用,可以用宏定义将调试等级的判断放在函数之外,如程序。 * () * ; (, , .) ( ) (, ) ( *, .) ; (, ); (, ); (); ( )Emxvx。Emxvx。 , ; ( ; ; ) * ; (, ; , , ); ; ( , *) ( ) ? () : 然后在程序中如下使用它:(, ) (: , );上述调试函数很灵活,可以在不同的模块中定义有不同的调试等级,当需要调试某功能时,只需将该模块的调试等级定义为相应的等级,就可输出需要的调试信息。y6v3A。y6v3A。根据方法五的思想,本人编写了(见程序)和 文件(见程序)。该文件可以应用于语言程序中,支持根据不同的功能模块分别定义不同的调试等级。M2ub6。M2ub6。 模块功能号 ,; 非文件的外部变量声明 ; (内部使用) 判断模块功能号是否允许等级的调试信息输出 (, ) ( ) (内部使用) 调试信息输出函数 (, .) ( : , , , , ) 初始化模块功能号的调试等级 (, ) ( ) 调试信息输出函数,该信息为模块功能号等级的调试信息 (, ) ( (, ) ) ? () : 程序: 0YujC。0YujC。 ;程序: 要使用上述文件,先得根据功能模块的数目扩展中的“模块功能号”枚举类型,然后在程序相应位置中调用宏定义 初始化相应模块的调试等级,在所有需要输出调试信息的位置如下编写即可。eUts8。eUts8。(, )( ; , , );

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论