2009-08-13 11 views
7

J'ai appris qt sur windows pendant un petit moment (background dans unix/embedded) et j'aimerais que stderr/stdout soit jeté quelque part (test unit/event logging/debug) depuis mon application win32 qt GUI. Cela semble être un grand ordre dans les fenêtres et I found this post on stackoverflow qui explique pourquoi.stdout/cout à partir d'une application lancée depuis qt creator?

Je me demande pourquoi qt n'a pas un mécanisme simple pour effectuer certaines des suggestions dans la publication pour les versions de débogage.

Est-ce qu'une telle facilité existe déjà dans qt ou suis-je laissé à rouler le mien (ou trouver un syslog lib)?

Répondre

14

qDebug() et les fonctions connexes sont à portée de main pour ce genre de chose - va s'envoyé au débogueur

#include <QDebug> 

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

C'est exactement ce que je cherchais, merci! – tim

2

Vous pouvez toujours commencer (si vous utilisez Qt Creator, qui va choisir ceux facilement!) vos programmes depuis la ligne de commande pour voir la sortie stdout (cmd.exe). De même, comme Paul Dixon l'a dit, en utilisant qDebug(), vous devriez pouvoir voir la sortie dans le débogueur.

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

Merci pour l'extrait de code, qui a été utile. – tim

2

Un moyen pas cher est de rouvrir simplement stdout/err (bien atleast dans win32, je suppose que ça va travailler avec Qt ainsi)

#include <stdio> 

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

Si vous avez besoin de suivi plus sérieux/consignation considérez par exemple log4cxx

+0

Merci pour le pointeur, j'ai ma propre infrastructure de journalisation que j'ai inventé qui ressemble beaucoup à log4cxx. Je vais devoir regarder de plus près celui-là pour voir si je devrais l'utiliser à la place. – tim

0

J'ai trouvé un paramètre sous Tools -> Options -> Build & Run -> [X] Merge stderr and stdout.

Cela aidera à montrer les choses envoyées.