2009-08-13 10 views
7

Przez jakiś czas uczyłem się qt w systemie Windows (tło w systemie Unix/Embedded) i chciałbym, aby stdout/stdout był wyrzucany gdzieś (test urządzenia/rejestrowanie zdarzeń/debugowanie) z mojej aplikacji GUI win32 qt. Wydaje się, że to wysokie zamówienie w oknach i I found this post on stackoverflow, co wyjaśnia dlaczego.stdout/cout z aplikacji uruchomionej z qt creator?

Zastanawiam się, dlaczego qt nie ma prostego mechanizmu do wykonywania niektórych sugestii w poście dla kompilacji debugowania.

Czy taki obiekt istnieje już w qt, czy mogę pozostawić go własnemu (lub znaleźć bibliotekę syslog)?

Odpowiedz

14

qDebug() i pokrewne funkcje są przydatne do tego rodzaju rzeczy - będą wysyłane do debugera

#include <QDebug> 

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

Dokładnie to, czego szukałem, dzięki! – tim

2

Zawsze można uruchomić (jeśli używasz Qt Creator, który odbierze ci się łatwo!) swoje programy z wiersza poleceń, aby zobaczyć wyjście standardowe (cmd.exe). Również, jak powiedział Paul Dixon, używając qDebug(), powinieneś widzieć wyjście w debugerze.

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

Dzięki za fragment kodu, to było pomocne. – tim

2

Jeden tanim sposobem jest po prostu ponownego stdout/err (dobrze conajmniej w win32, jestem przy założeniu, że to zadziała z Qt jak dobrze)

#include <stdio> 

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

Jeśli potrzebujesz bardziej poważne śledzenie/logowanie uwzględnia np log4cxx

+0

Dzięki za wskaźnik, mam własną infrastrukturę do logowania, którą wymyśliłem, która wygląda bardzo podobnie do log4cxx. Będę musiał bliżej przyjrzeć się temu, aby sprawdzić, czy powinienem go użyć zamiast tego. – tim

0

Znalazłem ustawienie pod Tools -> Options -> Build & Run -> [X] Merge stderr and stdout.

Pomoże to pokazać rzeczy wysłane do cout.

Powiązane problemy