QtCreator:qDebug消息未显示

QtCreator:qDebug消息未显示,qt,qt-creator,qdebug,Qt,Qt Creator,Qdebug,我目前正在使用QtCreator 3.2.1和Qt5.3.2,这是我当前在Windows7 64位Ultimate上的项目所要求的。我目前正在从事一个GUI项目 我无法在应用程序输出窗口中看到任何qDebug消息,尽管已执行以下操作: 具有适当的QDebug代码 在调试模式下构建项目 使用CONFIG+=openssl链接的CONFIG+=console作为构建项目的附加参数 根本不定义QT_NO_DEBUG_输出 确认在安装QtCreator期间安装了来自MinGW 4.8.2 32位的调试器

我目前正在使用QtCreator 3.2.1和Qt5.3.2,这是我当前在Windows7 64位Ultimate上的项目所要求的。我目前正在从事一个GUI项目

我无法在应用程序输出窗口中看到任何qDebug消息,尽管已执行以下操作:

具有适当的QDebug代码 在调试模式下构建项目 使用CONFIG+=openssl链接的CONFIG+=console作为构建项目的附加参数 根本不定义QT_NO_DEBUG_输出 确认在安装QtCreator期间安装了来自MinGW 4.8.2 32位的调试器GDB 我可以知道我还应该尝试什么吗?谢谢

我没有收到任何应该由打印出来的调试消息 QtCreator中的qDebug?原因可能是什么

通过自定义日志消息处理程序在Qt应用程序中重新定义标准Qt调试输出是很常见的,但我们仍然可以注意生成调试消息以到达调试控制台:

// example for custom message handler
void customLogHandler(QtMsgType type, const QMessageLogContext& context,
                      const QString& msg)
{
   // send the data to log file via the other thread
   emit writeToFile(type, context, msg);

   // now output to debugger console
#ifdef Q_OS_WIN
    OutputDebugString(text.toStdWString().c_str());
#else
    std::cerr << text.toStdString() << std::endl;
#endif
}

void main()
{
   // custom handler start
   qInstallMessageHandler(&customLogHandler);

   // other app initializations
}
在ArchLinux上为我做的

Qt创建者>工具>选项>工具包,选择您的工具包,查找环境,单击更改并添加:

   QT_ASSUME_STDERR_HAS_CONSOLE=1
现在,可以在应用程序输出中打印消息 比如说:

   qDebug() << "User clicked on the button!";
然后你应该在程序中看到这样的内容:


确保没有其他程序打开以获取输出流,例如debugview,一次只有一个应用程序从GUI应用程序接收输出。您可能还想尝试更新的Qt Creator版本,当前版本为4.2.0。谢谢,我如何确切地检查它?例如,我想我没有看到任何使用debugview的行。至于使用较新的Qt Creator,让我看看它是否仍能与Qt 5.3.2一起工作……如何启动程序?是“开始调试”还是“运行”?应用程序代码中是否有MessageHandler调用?您应该尝试更新版本的QTCreator@AlexanderVX:是的,main.cpp qinstallMessageHandler CustomMessageHandler中有这样一个调用;另外,我在启动程序时使用了启动调试所有这些工具。谢谢!我在我的项目中也发现了类似的代码,只是它被放在了头文件中。我想知道它是否应该放回main.cpp。现在我将使用qInstallMessageHandler0;因为我想先修复更紧急的bug。为什么QT_假定qDebug消息显示在QT Creator上需要qDebug的CONSOLE=1?这个bug应该报告给Qt吗?@nyanpasu64比尔·盖茨会说:我不会称它为bug——它是一个特性;撇开玩笑不谈,Qt创建者尽可能保持瘦。我猜在QT6或沿着一条路,可能出现一些复选框,使定制更容易,像调试工具或选择C++版本,而不必编辑模板等。如果调试功能除了添加那一行之外不起作用,那么就需要发出一个bug——但它工作得很好。在我正在使用的一些Linux发行版(如OpenSUSE)上,Qt调试消息被发送到journalctl而不是控制台。可能直接在控制台中运行的Qt程序将错误发送到控制台,而不是journalctl,但Qt Creator未被检测为控制台。谢谢,这在一个Arch安装中对我有效,而在另一个相同的Qt版本中,我不必添加标志来获得控制台输出。@HerrvonWurst感谢您的反馈