前言
QDebug类提供用于调试信息的输出流。
当开发人员需要将调试或跟踪信息写到设备,文件,字符串或控制台时,将使用QDebug。
当我们使用qDebug()打印信息时,只有我们所需要打印的信息,在此自定义一个宏,可以额外打印文件名,函数,行数,时间等等。
示例
#include <QDebug>//注意,头文件一定要添加
#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << __DATE__ << __TIME__<< "]"
int main(int argc, char *argv[])
{
MYLOG << "Hello World!";
return 1;
}
以上程序运行,将会打印如下内容:
[ ../GetMD5/main.cpp : 7 : main Nov 28 2019 10:35:07 ] Hello World!
可以看到在MYLOG宏中,添加了__FILE__,__LINE__,__func__,__DATE__,__TIME__这几个C/C++编译器内置的几个宏(注意,是双下划线,而不是单下划线),就可以打印我们额外添加的文件名,函数,行号等等,便于我们精确找到打印的位置。
__func__:当前的函数名;//__FUNCTION__也可以实现
__DATE__:当前的编译日期;
__TIME__:当前编译时间;
__FILE__:当前源文件路径及文件名;
__LINE__:当前源代码行号;
需要注意的是,__DATE__,__TIME__打印的是编译的时间,不是程序运行到打印时的时间,我们可以简单使用Qt自带的QDateTime实现,如下:
#include <QDebug>
#include <QDateTime>
#define MYLOG qDebug() << "[" << __FILE__ << ":" << __LINE__ << ":" << __func__ << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz")<< "]"
int main(int argc, char *argv[])
{
MYLOG << "Hello World!";
return 1;
}
运行后打印:
[ ../GetMD5/main.cpp : 8 : main "2019-11-28 10:51:22:894" ] Hello World!
结尾
只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~