从Qt 5.3切换到5.4,我的自定义消息处理程序突然接收到来自使用qDebug(),qWarning()和qCritical()的Qt库的行号和文件名.
文件表明这是Qt 5.4的变化.要获取此信息,您必须明确定义QT_MESSAGELOGCONTEXT.所以我做了.我下载了Qt 5.4源代码,配置它,编译它,并设置我的代码以使用新库.问题是,我仍然没有得到文件名和行号信息.
以下是我配置Qt构建的方法:
configure.bat -platform win32-msvc2010 -debug-and-release -nomake examples -nomake tests -opensource -opengl desktop -c++11 -no-strip -D QT_MESSAGELOGCONTEXT
Run Code Online (Sandbox Code Playgroud)
您不需要使用该定义重建Qt,您需要使用该定义启用来构建应用程序.
行为改变背后的基本原理非常简单:您可能不希望敏感信息(函数名称,行号)泄漏到您的应用程序可能具有的调试或警告输出中.
因此,默认情况下,在发布版本中,功能名称和行号被清除.另一方面,它们仍然可用于调试版本,因此您实际上可能会避免使用该定义,只需在调试模式下重新编译应用程序即可.
如果要为发布版本启用函数名称和行号,请打开.pro应用程序的文件并添加类似的内容
DEFINES += QT_MESSAGELOGCONTEXT
Run Code Online (Sandbox Code Playgroud)
然后重新运行qmake并重建整个应用程序.
| 归档时间: |
|
| 查看次数: |
2185 次 |
| 最近记录: |