2019년 7월 4일 목요일

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

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


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


시작 스레드에


가볍게 하나를 작성하고


디버깅을 실행하니


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


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


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

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

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

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

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

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

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

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


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


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

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


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


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


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

이제 디버깅을 하면


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


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

Related Posts:

  • String을 int로, int를 String으로 형변환 (Java, C#)코딩중에 형변환은 무진장 자주 사용하고 중요하지만 은근히 사용하려면 형식이나 문법이 기억나질 않아 자주 찾아 본 기억이 많아 이렇게 한번 작성합니다. ^^ 저도 이렇게 작성해두고는 또 나중에 언젠가 코딩하다 여길 다시 찾아보게 될꺼 같네요. 우선 자바입니다. 1 2 3 4 5 6 … Read More
  • C#에서 데이터 베이스에 연결하고, 쿼리를 실행하는 방법 (Mssql, .net)개념은 잘 알고 있어도 막상 필요할때 코드를 작성할려면 매서드와 순서가 잘 기억나지 않는 애들이죠 ^^ 저도 기억이 나질 않을때를 대비할겸 이번엔 C#에서 디비 연동과 쿼리 실행 부분에 대해서 알아보겠습니다. (DB는 MSSQL을 기준으로 작성합니다만 윈도우 인증 부분을 제외하면 똑같으니 상관 없겠죠) 1.… Read More
  • 엑셀 데이터를 이용한 단어 연습기 만들기 (C# 소스, 프로그램 배포 포함)오랜만에 돌아온 C# 이야기는 최근 일본어를 공부할때 단어 암기에 도움이 되기 위해 만든 단어 연습기에 대한 이야기 입니다. 처음에 일본어 한자를 외우기 위해서 엑셀에다 작업을 했었는데요. 이렇게 엑셀에다 단어의 한자, 뜻, 발음, 종류, 난이도 정도를 모르는 단어 위주로 6000여개를 작성하곤 처음… Read More
  • Log4J를 활용한 로그 관리 방법 (C#, Visual Studio환경, 텍스트 파일) - Log management method using Log4J In C#로그는 프로그램 코딩부터 운영까지 반드시 필요한 부분이지만 로그를 분류하고, 별도의 텍스트 파일에 로그를 저장하거나 로그 파일들을 관리하는건 상당히 귀찮은 부분이기도 합니다. ^^;; 이럴 땐 시간을 내서 자신에게 맞는 로그 관리 유틸을 만들어 사용하는게 최고이긴 하지만 아직 이런 도구가 없으시다면 아주 쉽게 … Read More
  • 변수명을 동적으로 선언해 사용하는 방법! (C#)코드를 짜다 보면 반복문을 이용이거나 기타 여러가지의 이유로 인해 변수의 이름을 동적으로 할당해야 하는 경우가 발생합니다. 1 2 3 4 5 6 7 8 9 10 11 12 //반복문에 의해 반복하는 만큼 변수를 선언해야 하는&nb… Read More

댓글 1개: