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等发送到日志文件的一些代码的修改.
您不必关闭应用程序即可查看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,它可能表现得很奇怪..
试一试..
| 归档时间: |
|
| 查看次数: |
40188 次 |
| 最近记录: |