初学者适用的输出调试方法
2010-11-28 21:43
190 查看
这天看一个朋友写的程序,第一眼看去感觉非常乱,仔细一看发现其实还是有点玄机在里面,为什么会那么乱是因为他在里面加入了调试信息,全都是打印的log。其实那样写有不少好处,可以很方便的注释掉调试代码。
现在分享下它的那种方法
#define DEBUG
/* 其他代码 */
..........
..........
/* 调试代码 */
#ifdef DEBUG
printf(".........../n");
#endif
这样写有一个好处就是如果我不要调试的时候把#define DEBUG注释了就完了,同时也能很容易的加入其他非输出语句方式的调试代码。不过缺点也不少,我们需要每次写调试信息的时候都加入#ifdef.........#endif,这都还好,大不了多谢点代码麻,关键的问题在于代码看上去很乱,代码不易维护,如果会排版或许会好点。
然后分享下第二种,个人比较喜欢这种,能少些代码,也能让代码美观:
#define DEBUG
#define XX_DEBUG
/* 调试宏定义 */
#ifdef DEBUG
# ifdef XX_DEBUG
# define PRINTF(fmt, args...) printf(fmt, ##args)
# else
# define PRINTF(fmt, args...) fprintf(stderr, fmt, ##args)
# endif
#else
# define PRINTF(fmt, args...) /* 什么事情也不做 */
#endif
/* 调试代码 */
PRINTF("%d/n", X);
.........
.........
如果不需要调试信息的时候把#define DEBUG注释了就行了。
这种方式的调试就不会在代码中出现#ifdef..........#endif一类语句了,代码就不会太乱了,同时也达到了调试了效果,只是这种方法也有个很明显的缺点,我不能加入除PRINTF以外的调试代码,即使能还得又在前面定义一堆宏。
我知道的就这两种了,如果还有其他的好方法请大家分享。谢谢..
现在分享下它的那种方法
#define DEBUG
/* 其他代码 */
..........
..........
/* 调试代码 */
#ifdef DEBUG
printf(".........../n");
#endif
这样写有一个好处就是如果我不要调试的时候把#define DEBUG注释了就完了,同时也能很容易的加入其他非输出语句方式的调试代码。不过缺点也不少,我们需要每次写调试信息的时候都加入#ifdef.........#endif,这都还好,大不了多谢点代码麻,关键的问题在于代码看上去很乱,代码不易维护,如果会排版或许会好点。
然后分享下第二种,个人比较喜欢这种,能少些代码,也能让代码美观:
#define DEBUG
#define XX_DEBUG
/* 调试宏定义 */
#ifdef DEBUG
# ifdef XX_DEBUG
# define PRINTF(fmt, args...) printf(fmt, ##args)
# else
# define PRINTF(fmt, args...) fprintf(stderr, fmt, ##args)
# endif
#else
# define PRINTF(fmt, args...) /* 什么事情也不做 */
#endif
/* 调试代码 */
PRINTF("%d/n", X);
.........
.........
如果不需要调试信息的时候把#define DEBUG注释了就行了。
这种方式的调试就不会在代码中出现#ifdef..........#endif一类语句了,代码就不会太乱了,同时也达到了调试了效果,只是这种方法也有个很明显的缺点,我不能加入除PRINTF以外的调试代码,即使能还得又在前面定义一堆宏。
我知道的就这两种了,如果还有其他的好方法请大家分享。谢谢..
相关文章推荐
- C语言中几种输出调试信息的方法
- VC中用到的几种调试输出TRACE的方法及其区别
- Xcode4.3.2真机调试NSLog无法输出中文的解决方法
- android真机调试 logcat日志不输出或者输出内容较少时解决方法
- C语言中几种输出调试信息的方法
- 输出调试信息的两种方法
- Struts2框架调试时,控制台打印输出大量<mime-mapping>相关信息,解决方法
- Yii框架在页面输出执行sql语句以方便调试的实现方法
- 两种输出调试信息的方法
- Xcode4.3.2真机调试NSLog无法输出中文的解决方法
- Xcode4.3.2真机调试NSLog无法输出中文的解决方法
- Window下Qt中用qDebug()输出调试信息到Console控制台的设置方法(转)
- Oracle PL/SQL过程调试的输出方法
- Visual studio C#语言输出调试信息到Output窗口方法
- Oracle数据库PL/SQL过程调试的输出方法
- java输出调试技巧及Eclipse快捷键使用方法
- win32使用OutputDebugString输出调试信息的方法
- PHP调试中常用的几种输出方法
- c和C++的调试打印输出方法
- SEGGER-RTT调试(代替串口printf输出)的使用方法