자신의 디버깅심볼(*.pdb)을 효율적으로 관리하기 개발도구

보통 제대로된 혹은 능력있는 개발자가 있는 개발회사라면 디버깅심볼은 잘 관리가 될 것입니다.
디버깅심볼이 있어야 사후디버깅이 가능하니까요. (여기서 사후디버깅이란 메모리 덤프를 말하고 있습니다)
디버깅심볼파일을 보통 어떻게 관리할까요?
전 subversion같은 저장소에서 관리하는 사람도 봤고 폴더내에 날짜 혹은 버전별로 관리하는 사람도 봤었습니다.
이런 분들은 메모리덤프를 분석할때마다 디버깅심볼파일의 경로를 수작업으로 마춰져야 하는 번거로움도 있죠.

그래서 제가 추천하는 관리방법은 심볼서버를 이용하는 것 인데요.
심볼서버(심볼스토어라고도 합니다)라고 해서 실제로 구동되는 서버는 아니라고 심볼파일이 잘 저장되어 있는 곳으로 보시면 됩니다.

Debugging Application 2nd 책을 보시면 이와 관련된 자세한 내용이 있지만
여기서 간단히 사용법을 보겠습니다.
(이 책의 스크립트는 꽤 유용하게 사용하곤 합니다.)

자신의 심볼저장을 위한 심볼서버만들기

1. 폴더를 하나 만든다.(저는 보통 ProductSymbols 로 네이밍합니다.)
2. cmd창을 띄우고 pdb가 존재하는 폴더로 이동합니다.
3. symstore 로 pdb를 저장한다.(핵심)
symstore.exe 라는 유틸이 WinDbg가 설치된 곳에 있습니다.
(실행시키 위해 환경변수 Path에 WinDbg경로를 등록해주시면 편리합니다)

symstore.exe add /r /f .\*.* /s \\devsvr\ProductsSymbols/t "제품이름" /v "Build 201X.XX.XX" /c "Comment"

/s 옵션으로 심볼서버를 지정합니다.
/t 옵션으로 제품이름을 지정하구요.
/v 옵션으로 빌드번호를 지정합니다.
/c 옵션으로 주석을 입력할 수 있습니다.

자세한건 symstore.exe /? 명령으로 확인해보시면 됩니다^^

여기까지하면 심볼스토어가 생성이 된거구요.
앞으로 제품이 빌드되고 또 심볼을 저장해야 한다면 위 명령을 스크립트로 만들어서 돌리면 좋습니다.
저는 PowerShell을 유용하게 쓰고 있는데요. 이와 관련해서는 나중에 포스트를 올려보도록 하겠습니다.

이쯤되면 근데 심볼서버에 저장은 했는데 어떻게 쓰죠? 라는 생각이 드실껀데요.
그런 다음 포스트에서 다뤄보겠습니다. ^^



* 다음포스트에서 다룰 내용
 - 심볼서버에 저장한 심볼을 사용하기
 - 단순 심볼저장의 문제점과 subversion 소스인덱싱


핑백

  • 책 이야기 : 디버깅툴 정리2 2013-01-07 13:43:32 #

    ... symbol path를 설정해줄 필요가 없다.http://nyolong.egloos.com/tag/_NT_SYMBOL_PATH 심볼파일 관리하기http://nyolong.egloos.com/845995 ... more

덧글

댓글 입력 영역