为了方便调试,可以在程序中添加一定的打印信息,这样可以通过串口打印进行查看,
但是这种方式只适合开发阶段中的开发人员,对于测试人员可能不会接串口来查看程序
运行过程中的打印信息。这时我们可以将打印信息以文本的形式保存起来,方便出问题
时查看打印日志,对已QT可以很方便实现。代码实现如下:
#ifdef DEBUG_LOG
void customMessageHandler(QtMsgType type, const QMessageLogContext &ctx, const QString &msg)
{
QString txt;
QDateTime time = QDateTime::currentDateTime();
QString timeStr = time.toString("yyyy-MM-dd hh:mm:ss");
switch (type)
{
case QtDebugMsg:
txt = QString("Debug:(%1) <%2> [%3] {%4}").arg(timeStr).arg(ctx.file).arg(ctx.line).arg(msg);
break;
case QtWarningMsg:
txt = QString("Warning:(%1) <%2> [%3] {%4}").arg(timeStr).arg(ctx.file).arg(ctx.line).arg(msg);
break;
case QtCriticalMsg:
txt = QString("Critical:(%1) <%2> [%3] {%4}").arg(timeStr).arg(ctx.file).arg(ctx.line).arg(msg);
break;
case QtFatalMsg:
txt = QString("Fatal:(%1) <%2> [%3] {%4}").arg(timeStr).arg(ctx.file).arg(ctx.line).arg(msg);
break;
default:
break;
}
#ifdef RUN_ON_PC
QFile outFile("/home/firephoenix/work/yuv/debugLog.txt");
#else
QFile outFile("/mnt/sdcard/mmcblk1p1/video/debugLog.txt");
#endif
outFile.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream ts(&outFile);
ts << txt << endl;
}
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
#ifdef DEBUG_LOG
qInstallMessageHandler(customMessageHandler);
#endif
WinFrame w;
w.show();
return a.exec();
}
为了方便开发与测试阶段都能方便的查看调试信息,可以在.pro文件中定义
DEFINES += DEBUG_LOG
这样在开发阶段可以将其屏蔽,这样开发人员可以通过串口查看打印信息,发行测试版本时可以将屏蔽
去掉,这样在测试阶段的打印信息将会保存在文件中。
1127

被折叠的 条评论
为什么被折叠?



