文章目录

  • Qt中qDebug()技巧初探
    • 一、发布时屏蔽debug 消息
    • 二、debug 程序定位
    • 三、Qt利用qDebug输出信息到文件

Qt中qDebug()技巧初探

一、发布时屏蔽debug 消息

发布程序时,去掉debug打印,可以加快程序执行速度,减小程序体积。
然而手动注释很麻烦,在pro文件里加上一行预定义宏即可。
DEFINES QT_NO_DEBUG_OUTPUT

二、debug 程序定位

例如:qDebug() << FILE << LINE << message;
这样debug小消息message就可以定位在程序文件中的某一行了。

三、Qt利用qDebug输出信息到文件

  1. 新建dlog.h
#ifndef DLOG_H
#define DLOG_H
#include <qapplication.h>
#include <QDateTime>
#include <QFile>
#include <QTextStream>
#include <QtMsgHandler>
#include <QMessageLogContext>
#include <QMutex>void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg)
{static QMutex mutex;mutex.lock();QString time=QDateTime::currentDateTime().toString(QString("[ yyyy-MM-dd HH:mm:ss:zzz ]"));QString mmsg;switch(type){case QtDebugMsg:mmsg=QString("%1: Debug:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));break;case QtInfoMsg:mmsg=QString("%1: Info:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));break;case QtWarningMsg:mmsg=QString("%1: Warning:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));break;case QtCriticalMsg:mmsg=QString("%1: Critical:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));break;case QtFatalMsg:mmsg=QString("%1: Fatal:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));abort();}QFile file("debug.txt");file.open(QIODevice::ReadWrite | QIODevice::Append);QTextStream stream(&file);stream << mmsg << "\r\n";file.flush();file.close();mutex.unlock();
}#endif // DLOG_H
  1. 修改main.cpp
#include "tool/dlog.h"
qInstallMessageHandler(myMsgOutput);
  1. pro文件
DEFINES += QT_MESSAGELOGCONTEXT

Qt中qDebug()技巧初探相关推荐

  1. QT中QDebug的使用

    QT中QDebug的使用 QDebug作用 使用前提 使用方法 方法1 类似c++的cout函数 方法2 构造函数直接引入参数 2.1 字符串拼接 2.2 格式化输出 参考博客 QDebug作用 qD ...

  2. qt种qdebug字符串_qDebug用法及中文乱码解决

    #include qDebug()< qDebug用于在控制台输出调试信息,主要有以下几种用法. 1.类似c++的cout函数 QString str="world"; qD ...

  3. Qt 中的信息输出机制:QDebug、QInfo、QWarning、QCritical 的简单介绍和用法

    Qt 中的信息输出机制 介绍 QDebug 在 Qt 中使用 qDebug 输出不同类型的信息 浮点数:使用 %!f(MISSING) 格式化符号输出浮点数 布尔值:使用 %! (MISSING)和 ...

  4. Qt中关于qDebug的使用

    在项目的开发中,当我们调试程序时,最常用的就是打印信息了,Qt为我们提供了非常方便的打印信息类QDebug. 大家应该已经很熟练的使用QDebug了,但也许有些地方并没有注意到,下面小豆君就介绍一下Q ...

  5. Qt中多线程间的同步

    文章目录 1 Qt中多线程间的同步 1 Qt中多线程间的同步 多线程编程的本质是什么? 并发性是多线程编程的本质. 在宏观上,所有线程并行执行. 多个线程间相互独立,互补干涉. 常规解决方案设计: 问 ...

  6. Qt中的QDialog

    文章目录 1 Qt中的QDialog 1.1 QDialog简介 1.2 模态对话框和非模态对话框 1.3 对话框的返回值 2 登陆对话框实例分析 2.1 分析 2.2 代码实现 2.3 登录对话框的 ...

  7. Qt中的枚举变量,Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS以及其他

    Qt中的枚举变量,Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS以及其他 前言 Q_ENUM的使用 Q_FLAG的引入解决什么问题? Q_NAMESPACE ...

  8. Qt Creator 使用技巧

    From: http://www.developer.nokia.com/Community/Wiki/Qt_Creator_%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7 ...

  9. Qt中操作SQLite数据库

    0.前言 SQLite是一款开源.轻量级.跨平台的数据库,无需server,无需安装和管理配置.它的设计目标是嵌入式的,所以很适合小型应用,也是Qt应用开发种常用的一种数据库. 1.驱动 Qt SQL ...

最新文章

  1. poj1905(二分查找)
  2. 查看LINUX进程内存占用情况 top pmap ps
  3. 计算机比赛的评分办法,汉字录入比赛评分规则方案
  4. Python学习---Django的request扩展[获取用户设备信息]
  5. 教你自己制作Vista与DOS双系统
  6. 安卓进阶系列-06数据库框架(LitePal)的使用
  7. 发表和编辑Post的一个Bug
  8. C#中数据类型及其转换知识点汇总
  9. MySQL数据库开发 (视频)
  10. Win 2012 OS 安装.Net Framework 3.5
  11. CountDownLatch使用解说
  12. 【转】无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  13. 3dmax顶点动画导入unity_怎么把3DMax中的模型动画导入unity
  14. 桥连模式,模板模式的改进
  15. 大型网站图片服务器架构的演进!
  16. 《狂人日记》是中国第一部现代白话文小说
  17. Xcode No account for team . Add a new account in the Accounts preference pane or verify that your
  18. 【折纸】如何折一个装桌面垃圾的纸盒子
  19. 矩阵方程的计算求解(Matlab实现)
  20. G1垃圾回收日志分析

热门文章

  1. Linux 使用本地yum源及软件包管理
  2. 莱斯信道衰落下的QPSK误码率分析
  3. chrome 获取剪贴板内容_Chrome 开发者工具的11 个高级使用技巧
  4. 医疗软件产品核心算法部分说明--转载截取
  5. 【笔记】Automatic recognition of soybean leaf diseases using UAV images and deep convolutional neural ne
  6. [云炬创业基础笔记]第九章企业的法律形态测试5
  7. java中属于常量_java中的常量和属性
  8. vue手机端回退_vue移动端弹框组件,vue-layer-mobile
  9. linux 软链接_Liunx 命令之链接操作
  10. JavaScript 模拟事件触发