본문 바로가기
Programming/VC++

DebugView 사용하기.- 작성 중

by ㅇㅏㄹI 수 2012. 3. 1.

※ 본 글은 인터넷에서 찾은 내용을 재편집한 겁니다. 원문은 참고사이트의 주소를 확인하세요.

Windows 에서 VisualStudio(이하 VS)로 개발하다보면 디버깅모드에서 중단점을 걸어서 버그를 잡곤 합니다. 하지만 종종 이러한 디버거를 활용하여 잡을 수 없는 버그를 만나게 된다.
특히나 이것저것 타이밍과 관련된 버그는 잡기가 참~~ 힘들죠. 디버깅모드에서는 정상적으로 처리가 되는데 실행만 시키면 뻑뻑뻑....ㅠ

그래서 이런 단점을 보완하는 실시간 디버깅 프로그램이 많다고 한다.
그 중에 하나인 DebugView를 알아보겠다.

DebugView 4.79 [ 내려받기 ]


DebugView는 Win32개발환경에서 디버그 메시지 확인용 함수인 OutputDebugString의 결과를 따로 모아서 보여주는 유틸리티.
로컬시스템 뿐만아니라 네트워크상의 시스템의 프로그램도 디버깅을 볼 수 있다고 한다.


DebugView는 VS에서 Output창에 나타나는 정보들을 실행파일을 실행시킨 상태에서 확인할 수 있다. 몇가지 제약사항은 있다.
1. VS를 디버깅모드로 실행했을 때는 메시지를 보여주지 않는다. VS의 디버거가 메시지를 다 받아버린다. Ctrl+F5 로 실행하자.
2. DebugView가 두 개 이상 실행되어 있으면 한 프로그램에서만 디버깅이 가능하다. 다시 연결하려면 [Computer] - [Connection Local] 메뉴 선택.
3. .NET에서는  OutputDebugString()이 있지만 System.Diagnostics.Trace.Write() 함수를 사용한다. 허나 System.Diagnostics.Debug.Write()를 사용하면 Release에서는 메시지가 보이지 않는다. MFC에서 TRACE()도 마찬가지이다.


실행 초기화면입니다.


실행환경
Winodws 7 64bit

VS와 DebugView 연결하기.
VS의 도구 -


참고 소스
void Debug_Trace(char* szFormat, ...)
{
    char cBuf[2048];
    ZeroMemory(cBuf, sizeof(cBuf));

    va_list vlMaker;

    va_start(vlMaker, szFormat);
    vsprintf_s(cBuf, szFormat,vlMaker);
    va_end(vlMaker);

    ::OutputDebugStringA(cBuf);
}


※ 주의사항\

DebugView를 사용할 때에는  Visual Studio에서 F5로 실행시키면 안된다. 
DebugView로 와야할 메시지를 VS의 Debug가 가로채기때문이다. ctrl+F5 추천.


DebugView에서 메시지 필터링하기.




참고사이트
http://www.4four.us/article/2008/06/message-filtering-in-debugview
http://blog.daum.net/pg365/45
http://eocsdev.blog.me/150079648311
http://blog.naver.com/superchangho/70048122632
http://technet.microsoft.com/ko-kr/sysinternals/bb896647%28en-us%29.aspx
http://yegam400.tistory.com/444
http://tongins.blog.me/80113638327


728x90

댓글