2019년 7월 4일 목요일

Visual Studio에서 PDB 파일을 찾거나 열 수 없습니다 에러 해결 방법 (C,C++,C#,.NET)

비주얼 스튜디오를 사용해서 프로그램 작성하다보면 한번쯤은 겪을 에러인 PDB 파일에 대한 에러 해결방법에 대해 알아보겠습니다.


오늘도 역시 새 프로젝트를 하나 생성하고


시작 스레드에


가볍게 하나를 작성하고


디버깅을 실행하니


코드라곤 콘솔에 문자 한 줄 작성하는거 밖에 없는데 디버깅을 실행하지 못했다라는 메시지가 뜹니다.


당황한 마음과 함께 로그를 살펴보면 프로그램 로드는 문제 없지만 그 전에 어떤 dll 파일과 함께 PDB 파일을 찾을 수 없다는 메시지가 보이는데요.


디버깅은 안되지만 희안하게도 프로그램 로드는 잘만 되는 상황이 발생합니다.

이 문제는 비주얼 스튜디오가 프로젝트를 빌드하는 과정과 디버깅 하는 과정에 차이가 있기 때문인데요.

프로그램에 문제만 없으면 되는 빌드와는 달리 디버깅은 프로그램의 진행과정에 참조되는모든 소스들과 메모리 주소, 실제 값 등이 필요하기 때문에 이 어셈블리와 주소들을 찾아주거나 사용자가 알 수 있는 값으로 해석해 주는 해결사가 필요합니다.

PDB(Program Debug Database)은 이름 그대로 프로그램을 디버깅 할 때 필요한 이 정보들을 찾을 수 있는 키가 저장 되어 있는 파일인거죠.

PDB 파일이 없이 디버깅은 진행 할 수도 있겠지만 그렇게 되면 제대로 된 참조를 보지 못한다던가 어셈블리만 실컷 구경하게 될겁니다.

위에서는 이 PDB 파일을 생성하고 관리해줄 dll과 파일이 없었기 때문에 프로그램 로드에는 성공하였지만 디버깅에는 실패하는 결과로 이어졌던거죠.

비주얼 스튜디오 6.0 이전 버전을 쓰던 머나먼 옛날에는 모든 프로젝트에 설정을 따로 해줘야 했었지만 이후로는 이렇게 가끔식 마주하게 되는 문제가 되었습니다.

해결 방법은 굉장히 간단합니다.


비주얼 스튜디오의 메뉴 중 디버그 항목의 옵션으로 들어가서


기호 항목에 기호 서버의 체크가 풀려 있는데 이걸 체크하면

위와같이 로딩이 필요할 수 있다는 안내말이 나오고


서버를 체크한 뒤 확인을 하면


첫 디버깅때 이렇게 기호를 로드하기 위한 대기시간이 조금 필요하고


그 이후부턴 이렇게 기로 로드가 이루어집니다. ^^

이제 디버깅을 하면


요렇게 깔끔하게 디버깅을 하실 수 있습니다. ^^


디버그 폴더에도 이렇게 pdb 파일이 자리잡고 있네요. ㅎㅎㅎ
Share: