posted by 방랑군 2009. 9. 15. 13:23

갑자기 매일 컴파일하고 빌드하면 dll 또는 exe 파일과 함께 만들어지는 pdb 란 확장자를 가진놈의 정체가 궁금해졌다.

요새 msdn 과 친해지려는 노력중이라, MSDN 에게 물어봤다. 요약하면 다음과 같다.

  1. PDB 는 Program DataBase 의 줄임말이다.
  2. pdb 파일에는 프로그램의 디버깅 및 프로젝트 상태 정보가 저장되어 진다.
  3. C# 및 Visual Basic 의 경우는 /debug 모드로 빌드할 때만 만들어 진다. Release 모드일때는 만들어 지지않는다. => 강제로 만들려면, /debug:pdbonlt 를 사용한다. 이것을 사용하게 되면 pdb가 생성은 되지만 디버그 정보를 사용할수 없다. (/debug:full 을 사용하여 빌드해야만 디버깅 할 수 있는 코드가 생성된다.)
  4. Visual Studio 디버거는 project.pdb 파일을 찾기 위해 EXE 또는 DLL 파일에서 PDB의 경로를 사용합니다. 디버거가 해당 위치에서 PDB 파일을 찾을 수 없거나 프로젝트를 다른 컴퓨터로 옮긴 경우와 같이 경로가 올바르지 않으면 디버거는 EXE가 포함된 경로를 검색한 다음 옵션 대화 상자에 지정된 기호 경로를 검색합니다. 이 경로는 일반적으로 기호 노드의 디버깅 폴더입니다. 디버그 대상 이진 데이터와 일치하지 않는 PDB는 디버거에서 로드할 수 없습니다.

===========출처 MSDN (http://msdn.microsoft.com/ko-kr/library/ms241903.aspx)===========

 

좀더 찾아보니, .pdb  파일들은 디버거가 바이너리에 대한 원본 소스 파일을 찾고 해당 소스 파일의 코드에 있는 중단점을 매핑하기 위해서 사용한다. 디버깅을 위해서는 반드시 pdb 파일이 있어야 함을 여기서 알 수 있다.

 

그리고 pdb파일의 종류는 매우 다양하다. 따라서 어떤 종류의 pdb 파일인지 알수있는 가장 간단한 방법은,

pdb파일을 notepad로 보면 (물론 깨져 보인다;;;) header 부분만은 깨지지 않고 보이게 된다. 물론 절대적인 꼼수이긴 하지만..ㅋㅋㅋ

 

 

[출처] C# pdb 파일|작성자 꽝짱

'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
값, 참조 타입  (0) 2009.09.30
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[ASP.NET] Transfer, Redirect, Excute..  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15