本文主要是介绍学习记录-Qt将调试信息保存到文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果能将调试信息打印到文件,那软件发布到其他机器运行时,就可以记录软件运行的异常情况了。
查看手册,Qt 的QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )函数可以安装一个自定义的消息处理函数,自带的例子如下:
#include <qapplication.h>#include <stdio.h>#include <stdlib.h>void myMessageOutput(QtMsgType type, const char *msg){switch (type) {case QtDebugMsg:fprintf(stderr, "Debug: %s\n", msg);break;case QtWarningMsg:fprintf(stderr, "Warning: %s\n", msg);break;case QtCriticalMsg:fprintf(stderr, "Critical: %s\n", msg);break;case QtFatalMsg:fprintf(stderr, "Fatal: %s\n", msg);abort();}}int main(int argc, char **argv){qInstallMsgHandler(myMessageOutput);QApplication app(argc, argv);...return app.exec();}
在这个例子的基础上,在myMessageOutput函数里加入将msg写入文件的代码就可以了。
以下是修改过代码:
#include <qapplication.h>#include <stdio.h>#include <stdlib.h>void myMessageOutput(QtMsgType type, const char *msg){QString txt;QString tim = QDate::currentDate().toString("yyyyMMdd") + QTime::currentTime().toString("hhmmss") + QString("-");switch (type) {case QtDebugMsg: //调试信息提示txt = tim + QString("Debug: %1\n").arg(msg);break;case QtWarningMsg: //一般的warning提示txt = tim + QString("Warning: %1").arg(msg);break;case QtCriticalMsg: //严重错误提示txt = tim + QString("Critical: %1").arg(msg);break;case QtFatalMsg: //致命错误提示txt = tim + QString("Fatal: %1").arg(msg);//abort();}QFile outFile("logFile.txt"); //写入文件outFile.open(QIODevice::WriteOnly | QIODevice::Append);QTextStream ts(&outFile);ts << txt << "\r\n" << endl;if(QtFatalMsg == type){abort();}}int main(int argc, char **argv){qInstallMsgHandler(myMessageOutput);QApplication app(argc, argv);...return app.exec();}
在主函数里注册了myMessageOutput函数后,再使用qDebug函数,打印输出就全部被写入到logFile.txt里面了。
这篇关于学习记录-Qt将调试信息保存到文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!