2009-08-13 43 views
7

我一直在windows上學習qt一段時間(unix/embedded中的背景),並希望從我的win32 qt GUI應用程序中將stderr/stdout轉出某處(單元測試/事件日誌記錄/調試)。這在Windows和I found this post on stackoverflow這似乎是一個很高的順序,這解釋了爲什麼。從qt創建者啓動的應用程序的stdout/cout?

我發現自己想知道爲什麼QT沒有一個簡單的機制來執行調試構建的帖子中的一些建議。

這樣的設施是否已經在qt中存在,或者我是否離開我自己(或找到syslog lib)?

回答

14

qDebug()和相關功能時很方便,諸如此類的事情 - 將被髮送到調試器

#include <QDebug> 

qDebug() << "x is: " << x; 
+0

這正是我期待的,謝謝! – tim 2009-08-13 22:18:56

2

您可以隨時啓動(如果你使用Qt Creator的,這將挑選那些起來很方便!)你的程序從命令行看到stdout輸出(cmd.exe)。 另外,就像Paul Dixon所說,通過使用qDebug(),您應該能夠在調試器中看到輸出。

#include <QDebug> 
... 
{ 
    ... 
    int x = 5; 
    qDebug() << "x is: " << x; 
} 
+0

感謝您的代碼片段,這很有幫助。 – tim 2009-08-13 22:20:37

2

一種廉價的方式是簡單地重新打開標準輸出/ ERR(在Win32以及ATLEAST,我假設它會使用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

+0

感謝您的指點,我有我自己的日誌記錄基礎設施,我發明了,看起來很像log4cxx。我將不得不仔細看看那個,看看我是否應該使用它。 – tim 2009-08-13 22:20:03

0

我在Tools -> Options -> Build & Run -> [X] Merge stderr and stdout下找到了一個設置。

這將幫助發送到cout的東西被顯示。