8

我在 Windows 上学习 qt 已经有一段时间了(unix/embedded 中的背景),并且希望从我的 win32 qt GUI 应用程序中将 stderr/stdout 转储到某个地方(单元测试/事件日志记录/调试)。这在 Windows 中似乎是一个很高的要求,我在 stackoverflow 上找到了这篇文章,解释了原因。

我发现自己想知道为什么 qt 没有一个简单的机制来执行帖子中针对调试构建的一些建议。

qt 中是否已经存在这样的设施,还是让我自己推出(或找到一个 syslog 库)?

4

4 回答 4

14

qDebug()和相关函数对于这类事情很方便 - 将被发送到调试器(如果您使用的是 Qt Creator,那将很容易找到它们!)

#include <QDebug>

qDebug() << "x is: " << x;
于 2009-08-13T18:54:24.283 回答
2

您始终可以从命令行启动程序以查看标准输出 (cmd.exe)。此外,就像 Paul Dixon 所说,通过使用 qDebug() 您应该能够在调试器中看到输出。

#include <QDebug>
...
{
   ...
   int x = 5;
   qDebug() << "x is: " << x;
}
于 2009-08-13T18:56:52.517 回答
2

一种便宜的方法是简单地重新打开 stdout/err (至少在 win32 中,我假设它也适用于 Qt)

#include <stdio>

//add this at the beginning of your main
freopen("c:\\temp\\stdout.txt","w",stdout);
freopen("c:\\temp\\stderr.txt","w",stderr);

如果您需要更严格的跟踪/日志记录,请考虑例如log4cxx

于 2009-08-13T19:07:33.753 回答
1

我在Tools -> Options -> Build & Run -> [X] Merge stderr and stdout.

这将有助于显示发送给 cout 的内容。

于 2012-09-21T04:10:25.077 回答