WinDbg help 에도 자세히 설명되어있는 내용이지만. 정리차원에서 간만에 포스팅합니다.
WinDbg 하나만 있으면 대부분의 환경에서 "디버깅" 이란 귀찮은 작업이 가능하죠.
보통 커널 디버깅에만 많이 사용들 하는데 유저모드 네이티브 어플리케이션 디버깅시에도
특히 리모트에서 실행중인 프로그램을 디버깅하는데 매우 유용합니다.
디버기(디버깅을 당할 컴퓨터)에 WinDbg 를 설치하고 (바이너리를 복사만 해도 됩니다!)
아래의 명령을 실행합니다. 이 명령을 실행하면 WinDbg 가 네트워크 서버로 동작하는 겁니다.
WinDbg.exe -server tcp:port=12345
명령이 잘 실행되었다면 빈 WinDbg 창이 뜨는데 여기서 디버깅할 프로그램을 실행하거나 실행중인
프로세스에 Attach 해도 됩니다.
( 이미 실행중인 프로세스를 디버깅 타겟 프로세스로 지정하려면 명령줄 뒤에 -p PID 형태의 옵션을 넣어도 되구요. )
예들들어 File -> Open Executable (Ctrl + E) 를 눌러서 notepad.exe 를 디버거로 실행시켜 두고, 디버거로 실행한 notepad.exe 를 원격에서 디버깅해 봅시다!!
디버거(디버깅을 하는 컴퓨터) 쪽에는 당연히 WinDbg 가 설치되어있어야 겠죠.
디버거에서 아래의 명령을 실행하면 디버기(Debuggee 라는 이름을 쓰는 컴퓨터. 당근 아이피로도 되죠)에
접속이 되고, 디버거에서 실행한 WinDbg 의 명령들이 그대로 디버기쪽에서 동작합니다.
WinDbg.exe -remote tcp:server=Debuggee,port=12345
명령이 잘 실행되었으면 마찬가지로 WinDbg 가 실행될 것입니다.
디버기에서 실행중인 WinDbg 화면도 아마 디버거쪽에서 실행중인 WinDbg 의 출력 내용과 동일할 것입니다.
이제 디버거쪽에서 필요할 심볼/소스 경로 설정해서 디버깅하면 되죠.
WinDbg 는 더욱 더 다양한 디버깅 시나리오를 지원하는데요. 자세한 내용은 WinDbg 의 도움말을 참고하시면 됩니다.
도움말의 Remote Debugging 으로 색인해 보시면 나옵니다.
댓글 없음:
댓글 쓰기