代码debug阶段多加些打印方便定位,debug结束再依次删除打印比较麻烦。可以使用宏重新定义printf函数,需要打印时调用重定义的宏,用宏开关控制所有打印。注意需要使用变长参数函数式宏。 /* * PRINTF调试信息: * 使用:PRINTF(),打印调试log */#ifdefDEBUG#definePRINTF(format, ...) printf(format, ##__VA_ARGS__...
//仅仅是打印函数名字替换 DEBUG <--> printf #define DEBUG(format, ...) printf(format, ##__VA_ARGS__) //替换打印函数,在打印出来的内容加上前缀 #define XFUNC_PRINT(format, arg...) printf("XFUNC: " format "", ##arg) //名字替换,并在打印出来的内容加上前缀,同时加入定位的功能。 #de...
运行该程序,在输岀界面中查看通过 Debug 类输出的信息,界面如下图所示。 从输出窗口的内容可以看出,通过 Debug 类所打印的内容全部显示在该窗口中。 使用Trace 类也能完成同样的效果,只需将上述代码中的 Debug 类换成 Trace 类即可。 提示:Trace 类的 WriteLine 方法中的参数不支持上述代码中 Debug 类的 WriteL...
#include <stdio.h>#include<stdarg.h>//仅仅是打印函数名字替换 DEBUG <--> printf#defineDEBUG(format, ...) printf(format, ##__VA_ARGS__)//替换打印函数,在打印出来的内容加上前缀#defineXFUNC_PRINT(format, arg...) printf("XFUNC: " format "", ##arg)//名字替换,并在打印出来的内容加上...
通过DEBUG这个宏来开启是否开启调试信息打印功能,如果程序稳定后,不需要打印调试信息,就可以将DEBUG的定义取消掉即可。 完整代码: #include <stdio.h> #include #include <stdlib.h> #include <string.h> #include <windows.h> #include <iostream> #include <...
一种方法是逐句进行注释,这是一种比较低效的方法。比较高效的方法就是添加调试宏开关,利用条件编译来选择打印/不打印调试信息。 比如我们可以把上面的代码改造为: #define DEBUG 1 #if DEBUG #define DBG_PRINTF(fmt, args...) \ {\ printf("<<File:%s Line:%d Function:%s>> ", __FILE__, __LINE_...
在Debug版本下,是进行死循环的打印,但是在Release版本下,却能打印出13个hehe,(后面会通过调试实战讲到具体的死循环原因,在这里只需要知道,Release版本下,会对代码进行优化即可)。 调试实战 快捷键以及程序信息的查看 接下来先介绍几个最常使用的快捷键:
日志级别可以帮助开发者根据重要性过滤日志信息。常见的日志级别包括DEBUG、INFO、WARNING、ERROR等。 2. 日志配置 允许开发者在程序运行时或编译时配置日志系统的行为,如设置日志级别、指定日志输出目标等。 示例代码(简化版) c #include <stdio.h> #include <stdlib.h> ...
C语言,调试必备的DEBUG宏定义 1. #include <stdio.h>#include<stdarg.h>//仅仅是打印函数名字替换 DEBUG <--> printf#defineDEBUG(format, ...) printf(format, ##__VA_ARGS__)//替换打印函数,在打印出来的内容加上前缀#defineXFUNC_PRINT(format, arg...) printf("XFUNC: " format "", ##arg)/...
方法二:自定义调试函数debug。 为 了避免方法一的缺点,可以利用条件编译技术,如程序4自定义调试函数debug。当程序正式发布的编译时取消宏定义__DEBUG__,在正式发布的程序 中就不会输出调试信息。若又出现bug,只要重新在编译程序时定义宏__DEBUG__即可恢复原来的调试信息输出。可以在编写程序时就有目的事先插入些 ...