심볼 스토어(Symbol Store)란 쉽게 말하면 MS 웹심볼 서버 같이 심볼파일들을 모든 버전에 대해서 모아 놓는 곳을 의미합니다. 모든 심볼파일들을 모아 놓고 심볼경로로 여기만 지정하면 디버깅하는 모듈의 심볼파일이 저절로 찾아져서 매번 심볼파일을 찾고 복사하는 작업을 할 필요가 없습니다.
제 PC 는 D:\MySymbol 이라는 심볼 스토어를 만들었습니다.
(말이 심볼 스토어지 일반적인 그냥 폴더입니다. ^^)
모듈을 빌드하고 테스트할 때마다 매번 빌드된 심볼파일을 심폴패스에 복사해야 하는데 버전이 다르면 기존 것을 지우고 복사해야 하는 등의 번거로운 점이 있었기 때문에 이것을 해결하고 싶었습니다.
그래서 D:\MySymbol 을 만들어서 빌드한 심볼파일을 그때 그때 심볼 스토어 형식으로 더하면 D:\MySymbol 에는 제가 개발하는 모듈의 모든 버전들에 대한 심볼파일들이 체크썸에 따라 분류되어 쌓입니다. 새로 빌드한 심볼파일의 복사가 실패하지도 않을 것이고 과거 버전들에 대한 디버깅도 가능해 집니다.
심볼파일을 더하기 편하도록 배치파일 AddMySym.bat 을 만들었습니다.
배치파일 내부에서 symstore.exe 를 사용하는데 WinDbg 폴더에 있는 심볼 스토어 유틸리티입니다.
(저는 WinDbg 경로를 패스로 뚫어놔서 배치파일 상에서 그냥 symstore 를 사용하도록 되어있습니다.)
심볼파일 경로를 파라미터로 받으므로 다음과 같이 명령창에서 하셔도 되구요.
C:\Test> AddMySym C:\Project\Bin\MyDrv.pdb
편하게 사용하려면 이 배치파일을 바탕화면에 복사해 놓거나 단축아이콘을 만들어 놓고
심볼파일을 들어다가 Drag & Drop 해 넣으면 됩니다.
WinDbg 사용하실 때는 심볼패스에 D:\MySymbol 을 추가해 놓으시면 됩니다.
D:\MySymbol 의 용량이 커지게 되면 나중에 한꺼번에 지우면 되지요. 어차피 개발중인 것들이었으므로...
물론 배포하는 버전의 심볼은 항상 따로 보관하는 곳이 있어야 겠지요.
AddMySym.bat 을 첨부합니다.
사용하실 분은 로컬경로만 자신에 맞게 수정하시고 사용하시면 됩니다.
Tip) 네트워크 공유 폴더를 심볼 스토어로 사용하시면 자신의 팀 모듈들, 제품 모듈들에 대한 심볼 스토어를 만들수 있습니다. 팀원들이 공유하는 심볼 스토어가 만들어 지는 것이지요.
http://www.driveronline.org/bbs/view.asp?tb=tipbbs&GotoPage=1&s_bulu=&s_key=&no=94