2009-08-13 6 views
7

윈도우에서 qt를 배우는 동안 잠시 (유닉스/임베디드 환경) 배경에 stderr/stdout을 내 win32 qt GUI 응용 프로그램에서 어딘가에 덤프 (단위 테스트/이벤트 로깅/디버그)하고 싶습니다. 그것은 창문에서 키가 큰 주문 인 것 같고 이유를 설명하는 I found this post on stackoverflow입니다.응용 프로그램의 stdout/cout이 qt 작성자에서 시작 되었습니까?

나는 왜 qt가 디버그 빌드를 위해 게시물에서 제안을 수행하는 간단한 메커니즘을 가지고 있지 않은지 궁금해합니다.

그런 시설이 qt에 이미 있습니까? 아니면 내 자신을 굴리기 위해 남았습니까 (아니면 syslog lib를 찾으십니까?)?

답변

14

qDebug() 및 관련 기능이 그런 일을 위해 편리 - 디버거에 보내 얻을 것이다

#include <QDebug> 

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

정확히 내가 뭘 찾고 있었는지, 고마워! – tim

2

당신은 항상 시작할 수 있습니다 (당신은 Qt는 창조주를 사용하는 경우, 즉 쉽게 사람을 선택할 것!) stdout 출력 (cmd.exe)을 보려면 명령 줄에서 프로그램을 실행하십시오. Paul Dixon이 말한 것처럼, qDebug()를 사용하면 디버거에서 출력을 볼 수 있습니다.

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

코드 스 니펫을 보내 주셔서 감사합니다. – tim

2

한 싼 방법은 좀 더 심각한 추적을해야하는 경우 단순히

#include <stdio> 

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

(나는 그것뿐만 아니라 Qt를 도와 드리겠습니다 있으리라 믿고있어 잘이어야는 Win32에서) 표준 출력/ERR을 다시하는 것입니다/로깅 고려 예 log4cxx

+0

포인터를 주셔서 감사 드리며, 필자가 작성한 자체 로깅 인프라가 log4cxx와 매우 흡사합니다. 그걸 대신 사용해야하는지 알아보기 위해 좀 더 자세히 살펴 봐야 할 것입니다. – tim

0

Tools -> Options -> Build & Run -> [X] Merge stderr and stdout 아래의 설정을 발견했습니다.

이렇게하면 보내지는 것이 도움이됩니다.

관련 문제