在QtCreator中调试时如何查看qDebug消息

Eti*_*ard 14 qt gdb mingw qt-creator

我正在从Eclipse CDT(使用Qt集成插件)转换到QtCreator 2.0,但仍然有一件事让我烦恼QtCreator:

当我在QtCreator中调试时,我没有看到我的qDebug消息,Application output tab直到我停止我正在调试的应用程序...然后它们都被立即显示,这不是很有用.

使用Eclipse,我没有这个问题:在单步执行源代码时遇到qDebug消息是正确显示的.

我在Windows下使用Eclipse CDT和Qt Creator.我没有在Linux下尝试(现在不是一个选项).

kur*_*ige 12

虽然不是一个完整的答案,但您可以安装DebugView(如果您在XP机器上)以查看qDebug输出,同时您尝试解决这个问题.

另一个解决方案可能被认为是一个hack,但工作得很好,就是自己简单地劫持调试消息:

#include <QtCore/QCoreApplication>
#include <QDebug>
#include <iostream>

void msgHandler( QtMsgType type, const char* msg )
{
    const char symbols[] = { 'I', 'E', '!', 'X' };
    QString output = QString("[%1] %2").arg( symbols[type] ).arg( msg );
    std::cerr << output.toStdString() << std::endl;
    if( type == QtFatalMsg ) abort();
}

int main(int argc, char *argv[])
{
    qInstallMsgHandler( msgHandler );
    QCoreApplication a(argc, argv);

    qDebug() << "Hello world.";
    qWarning() << "Uh, oh...";
    qCritical() << "Oh, noes!";
    qFatal( "AAAAAAAAAH!" );

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

哪个会输出:

[I] Hello world. 
[E] Uh, oh... 
[!] Oh, noes! 
[X] AAAAAAAAAH!

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Run Code Online (Sandbox Code Playgroud)

这实际上是我自己用来将qDebug,qWarning等发送到日志文件的一些代码的修改.


lia*_*iaK 7

不必关闭应用程序即可查看qDebug()消息.

3 - Application output在Qt Creator的最底部有一个选项卡.单击该窗口将显示Qt Creator底部的应用程序输出窗口.

qDebug()当应用程序仍在运行时,该特定窗口将在它们被调用时立即显示消息.

希望能帮助到你.

编辑:

我不确定这是否是一个答案,但它可能是一个很好的有效原因.

qDebug()文档中,

这些函数的Qt实现将文本打印到Unix/X11和Mac OS X下的stderr输出.对于Windows,如果它是控制台应用程序,则将文本发送到控制台; 否则,它被发送到调试器.

现在Qt Creator没有附加它自己的调试器.

Qt Creator文档中,我们必须手动安装调试器.由于您使用的是Windows,因此需要手动安装Windows调试工具.此处可以找到更多文档...

虽然我不习惯Eclipse CDT,但我认为可能有一个调试器连接到它,因此它正确显示调试输出.

由于没有调试器附加到Qt Creator,它可能表现得很奇怪..

试一试..