如何识别导致Qt警告消息的线路?

How to identify the line cause the Qt's warning message?

本文关键字:警告 Qt 消息 线路 何识别 识别      更新时间:2023-10-16

我正在使用Qt,有时它会在调试窗口中发出以[E]开头的警告消息。大多数情况下,[E]警告消息还将提供有关发出此警告的cpp文件的行信息的信息。像这个:

at kernelqmetatype.cpp:597 Type conversion already registered from type QPair<QByteArray,QByteArray> to type QtMetaTypePrivate::QPairVariantInterfaceImpl

然而,这些cpp文件通常是Qt自己的文件,通常是windows中的dll。问题是,我从未在自己的代码中注册过这样的类型转换。这个警告似乎与多线程有关,因为它并不是每次都出现。是否有任何方法、函数、工具或技术可以帮助我确定是哪行源代码触发了此警告?

qWarning和其他QDebug方法通过消息处理程序发送日志。

您可以使用qInstallMsgHandler将默认断点替换为自己的断点,并在其中放置断点。