멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki

앞서 말쓸드린 윈도우즈 command line  디버거인 NTSD는 실행 중인 프로세스에 Attach하는 기능뿐만 아니라 Detach하는 기능도 포함되어 있습니다. 아래는 이 기능을 이용하여 덤프 파일을 만드는 예제입니다. "CrashProgrm"이라는 프로그램이 버그로 인해 간혹 크래시되고 있다면 아래와 같은 배치파일로 NTSD를 attach 시켜놓으면, 크래시가 일어나는 순간 "c:\crash.dmp"라는 파일을 만들고 종료합니다.

혹은 아래 배치를 실행한 후 나타나는 디버거 command 윈도우창에서 Ctrl+C를 누르면 현재 CrashProgram의 메모리와 스레드 (콜스택 포함) 정보를 덤프파일로 만들고, 디버거는 바로 detach되며, CrashProgram는 종료되지 않고 계속 실행하게 됩니다.  만들어진 덤프파일은 나중에 "ntsd -z crash.dmp"로 로드하여 분석할 수 있습니다. 가끔 hang되어 응답이 없는 프로그램을 디버그 하려고 할 때 편리합니다.

특히, 내 컴퓨터가 아니고 다른 사람의 컴퓨터에서 일어나는 문제를 살펴볼 때, 비주얼 스튜디오를 설치하지 않고도 디버깅 할 수 있습니다.  (NTSD는 XP에 포함되어 있으며, OS에 없다고 해도 디버거 파일 몇개를 플래시 메모리에 넣어 가지고 다니다가 사용하면 됩니다.)

for /f %%i in ('tlist CrashProgram') do set PID=%%i
if "%PID%"=="" goto :EndScript
ntsd -g -c ".logopen /d;.dump /o /mFuth c:\crash.dmp;.detach;q" -p %PID%

:EndScript
goto :EOF

크리에이티브 커먼즈 라이센스
Creative Commons License

Trackback Address :: http://devnote.net/trackback/32


◀ PREV : [1] : ... [65] : [66] : [67] : [68] : [69] : [70] : [71] : [72] : [73] : ... [93] : NEXT ▶