【发布时间】:2015-11-30 06:11:20
【问题描述】:
我正在 Qt 中开发一个应用程序,出于调试目的,我正在使用qDebug() 向控制台写入大量消息,我的问题是调试消息是否会导致应用程序的性能。我应该在部署应用程序时删除它吗?
【问题讨论】:
标签: qt
我正在 Qt 中开发一个应用程序,出于调试目的,我正在使用qDebug() 向控制台写入大量消息,我的问题是调试消息是否会导致应用程序的性能。我应该在部署应用程序时删除它吗?
【问题讨论】:
标签: qt
在 Qt 5 中,我们有 qInstallMessageHandler 全局函数,我们可以通过提供自己的回调函数来操作实际的日志输出,该回调函数决定是否在运行时输出日志消息。 Qt 4 中也有同样的功能,叫做qInstallMsgHandler。
安装之前定义的 Qt 消息处理程序。 返回指向上一个消息处理程序的指针。
消息处理程序是一个打印调试消息的函数, 警告、严重和致命错误消息。 Qt 库(调试 模式)包含数百条警告消息,当 发生内部错误(通常是无效的函数参数)。 Qt 构建 在发布模式中也包含这样的警告,除非 QT_NO_WARNING_OUTPUT 和/或 QT_NO_DEBUG_OUTPUT 已在期间设置 汇编。如果您实现自己的消息处理程序,您将获得总计 控制这些消息。
在某些应用程序发布的生产版本中,默认情况下只允许qtWarningMsg 和更高版本。
是的,日志记录可能会影响应用程序的性能。有几种技术可以减少负面影响。最重要的是将日志输出(生产应用程序版本主要使用文件并通过 Internet 发送)隔离在一个单独的线程上,该线程服务于文件/其他操作。
【讨论】:
当然会有一些影响。在release模式下最好去掉debug logging,可以通过宏QT_NO_DEBUG_OUTPUT来完成
【讨论】: