2009-08-13 19 views
7

He estado aprendiendo qt en Windows por un tiempo (fondo en Unix/embedded) y me gustaría tener stderr/stdout arrojado a algún lado (prueba unitaria/registro de eventos/depuración) desde mi aplicación win32 qt GUI. Eso parece ser un pedido difícil en Windows y I found this post on stackoverflow, lo que explica por qué.stdout/cout desde la aplicación iniciada desde qt creator?

Me pregunto por qué qt no tiene un mecanismo simple para realizar algunas de las sugerencias en la publicación para compilaciones de depuración.

¿Ya existe una instalación de este tipo en qt o me queda por rodar la mía (o encontrar una biblioteca syslog)?

Respuesta

14

qDebug() y funciones relacionadas son útiles para ese tipo de cosas - le son enviadas al depurador

#include <QDebug> 

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

Eso es exactamente lo que estaba buscando, gracias! – tim

2

Siempre se puede empezar (si está usando Qt Creator, que recogerá los de arriba fácilmente!) sus programas desde la línea de comandos para ver la salida stdout (cmd.exe). Además, como dijo Paul Dixon, al usar qDebug() debería poder ver el resultado en el depurador.

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

Gracias por el fragmento de código, fue útil. – tim

2

Una forma barata es simplemente abrir de nuevo la salida estándar/err (así al menos en Win32, estoy suponiendo que va a trabajar con Qt así)

#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 necesita algo de rastreo más grave/logging considere, por ejemplo log4cxx

+0

Gracias por el puntero, tengo mi propia infraestructura de registro que inventé que se parece mucho a log4cxx. Tendré que echarle un vistazo más de cerca para ver si debo usar eso en su lugar. – tim

0

Encontré una configuración en Tools -> Options -> Build & Run -> [X] Merge stderr and stdout.

Eso ayudará a que las cosas enviadas a cout se muestren.

Cuestiones relacionadas