很多时候,我们程序中都会有各种各样的Debug信息,用于调试输出。
直接使用QtCreator的调试器也可以,但是一般情况下,如果你不是想看那些循环体中的变量,或者是某些调试变量的值,直接一个qDebug(xx)或许来得更加方便。
尤其是在调试一些逻辑过程的时候,看看哪里逻辑对错,若是使用调试器,调试起来会比较慢,而且经常晕头转向的跳转跳转,还不如一个输出语句,然后ctrl+r运行来得快捷。
所以,不同场合不同方式,怎么用得爽怎么来吧。
那么一旦你的调试语句过多,或者当你需要交付程序的时候,你就需要使用另一种方式去控制输出语句的数量了。
譬如:
在Qt项目的project文件中定义一个NO_DEBUG,如下:
- DEFINES += QT_NO_WARNING_OUTPUT
- DEFINES += QT_NO_DEBUG_OUTPUT
记得重新构建,不然不生效的。
还有一种场合,就是主线程中,一般是ui线程,也可以是没有ui的没有线程存在的程序进程中,你在主线程中以每秒输出一个调试信息的速度去运行程序,尤其是某些数据收发过程,
当你的主线程中还有另外的定时任务处理时,你就必须屏蔽这些大量的输出语句了,不然,这些任务虽然也能执行,但是大量的刷屏信息,估计你也受不了。这时候,我们就可以先行屏蔽qDebug调试信息,使用printf局部调试,这样就可以方便快捷运行程序了。
当然了,你还可以使用替换符,将qDebug用//qDebug替换掉,不过这么一来,倒是候可能更麻烦,代码文件不多的时候倒是可以的。
另一种方式,就是使用线程,将定时任务和其他任务分开线程写也行,一般收发数据之类的操作,都是在线程中进行的。