TRACE, Trace 를 믿지 마세요. (정확하지 않은 오류)
개요.. |
1000개의 빠른 TRACE 를 호출 할 경우 1000개 모두 디버그 창에 출력되리라고 믿지 마세요.
버퍼에 초과된 TRACE 는 출력되지 않습니다.
해결책 |
1. TRACE를 아래와 같은 빠른 반복구문에서는 사용하지 않는다.
2. 사용하더라도 100% 신뢰하지 않는다.
3. 정말 정확한 정보를 알고 싶다면 디버그 구문을 파일로 출력한다.
4. Sleep() 을 이용하여 느리게 출력한다.
코드 |
for( int i=0; i<1000; i++ ) { static int nTrace = 0; TRACE( "%s:%d nTrace = %d %d\n", __FILE__, __LINE__, nTrace++, i ); }
디버그창 :
D:\RapidEngine\RapidGui\sample\r_gui_wnd\MainFrm.cpp:282 nTrace = 0 0 ........ ........
D:\RapidEngine\RapidGui\sample\r_gui_wnd\MainFrm.cpp:282 nTrace = 391 391
|
보너스 정보 |
멀티 스레드( Multi Thread) 프로그램에서는 TRACE 와 static의 조합을 매우 주의해서 해야 합니다. 특정상황에서 다운된 경험이 있습니다.