【QT开发】debug 功能使用

在 Qt 框架中提供了以下 几个函数用于不同级别的信息输出:

  • qWarning():用于输出警告信息,当程序遇到一些异常但不一定致命的错误时,可以使用qWarning()来通知用户或开发者
  • qDebug():用于输出调试信息,如变量的值、函数的返回值。 qInfo():用于输出提示信息,如程序启动信息或操作成功信息。
  • qCritical():用于输出比qWarning()更严重的错误信息,但仍然不会导致程序立即终止。
  • qFatal():是一个用于报告致命错误的函数。当在 Qt 应用程序中发生无法恢复的错误时,通常会使用 qFatal() 来记录错误信息并终止程序。这个函数将错误信息发送到标准错误输出(stderr),并调用 abort() 来终止程序。它不会与流操作符(如 <<)一起使用,因为它不接受这样的参数。

关闭 qDebug 日志打印,需要在 .pro 文件中添加编译选项:

DEFINES += QT_NO_DEBUG_OUTPUT

示例代码:

#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug() << "test qDebug" ;
    qWarning() << "test qWarning" ;
    qCritical() << "test qCritical" ;
    return a.exec();
}

日志打印如下:

[root@100ask:/opt/test/bin]# ./test
test qWarning
test qCritical

将 qDebug、qWarning、qCritical、qFatal 日志信息导入到文件中。
示例代码:

#include "widget.h"
#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QDateTime>

// 自定义的消息处理器
void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    // 设置文件路径和文件名
    QString logFilePath = "application.log";
    QFile file(logFilePath);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Append))
        return;

    QTextStream out(&file);
    QString text;
    switch (type) {
    case QtDebugMsg:
        text = QString("Debug: %1").arg(msg);
        break;
    case QtWarningMsg:
        text = QString("Warning: %1").arg(msg);
        break;
    case QtCriticalMsg:
        text = QString("Critical: %1").arg(msg);
        break;
    case QtFatalMsg:
        text = QString("Fatal: %1").arg(msg);
        // 可以在这里添加代码来处理致命错误,比如退出应用程序
        abort();
    }

    out << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz ")
        << text << endl;
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 安装自定义的消息处理器
    qInstallMessageHandler(customMessageHandler);

    qDebug() << "test qDebug" ;
    qWarning() << "test qWarning" ;
    qCritical() << "test qCritical" ;
    qFatal("test qFatal");

    return a.exec();
}

application.log 中的日志如下所示:

[root@100ask:/opt/test/bin]# ls
application.log  test
[root@100ask:/opt/test/bin]# cat application.log
1970-01-01 01:57:48.291 Debug: test qDebug
1970-01-01 01:57:48.294 Warning: test qWarning
1970-01-01 01:57:48.295 Critical: test qCritical
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值