프로그램 데이터베이스 파일(C++)
업데이트: 2011년 3월
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium 및 Ultimate |
PDB(프로그램 데이터베이스) 파일에는 프로그램의 디버그 구성을 증분 링크할 수 있도록 디버깅 및 프로젝트 상태 정보가 저장됩니다. PDB 파일은 /ZI 또는 /Zi를 사용하여 빌드할 때 작성됩니다(C/C++의 경우).
Visual C++의 /Fd 옵션은 컴파일러에서 만드는 PDB 파일의 이름을 지정하는 옵션입니다. Visual Studio에서 마법사를 사용하여 프로젝트를 만들면 /Fd 옵션이 설정되어 project.PDB라는 PDB 파일이 만들어집니다.
메이크파일을 사용하여 C/C++ 응용 프로그램을 빌드하고 /Fd 옵션 없이 /ZI 또는 /Zi 옵션을 지정하면 다음 두 개의 PDB 파일이 만들어집니다.
VC80.PDB. 일반적으로 표현하면 VCx0.PDB이고, 여기서 x는 Visual C++의 버전을 나타냅니다. 이 파일에는 각 OBJ 파일에 대한 디버깅 정보가 모두 들어 있으며, 프로젝트 메이크파일과 동일한 디렉터리에 저장됩니다.
project.PDB. 이 파일에는 .exe 파일에 대한 디버그 정보가 모두 저장됩니다. C/C++의 경우에는 \debug 하위 디렉터리에 이 파일이 저장됩니다.
C/C++ 컴파일러에서는 OBJ 파일을 만들 때마다 VCx0.PDB 파일에 디버그 정보를 병합합니다. 삽입되는 정보에는 유형 정보가 포함되지만 함수 정의와 같은 기호 정보는 포함되지 않습니다. 따라서 <windows.h>와 같은 공통 헤더 파일은 모든 소스 파일에 포함되지만, 해당 헤더의 typedef는 모든 OBJ 파일에 저장되지 않고 한 번만 저장됩니다.
링커에서는 프로젝트의 EXE 파일에 대한 디버그 정보가 포함된 project.PDB 파일을 만듭니다. project.PDB 파일에는 VCx0.PDB에 있는 형식 정보뿐만 아니라 함수 프로토타입을 포함한 모든 디버그 정보가 포함됩니다. PDB 파일 모두 증분 업데이트가 가능합니다. 링커에서는 작성되는 .exe 파일이나 .dll 파일에 .pdb 파일의 경로도 포함합니다.
Visual Studio 디버거에서는 EXE 또는 DLL 파일에 있는 PDB의 경로를 사용하여 project.PDB 파일을 찾습니다. 디버거가 해당 위치에서 PDB 파일을 찾지 못하거나 프로젝트를 다른 컴퓨터로 옮긴 경우와 같이 경로가 올바르지 않으면 디버거는 EXE가 포함된 경로, 즉 옵션 대화 상자(디버깅 폴더, 기호 노드)에 지정된 기호 경로를 검색합니다. 디버거가 PDB 파일을 찾지 못하면 기호를 검색하거나 검색 경로에 위치를 추가할 수 있는 기호 찾기 대화 상자가 나타납니다.
중요
디버거에서는 이진 파일을 빌드할 때 만들어진 PDB와 정확하게 일치하는 이진 파일용 PDB만 로드합니다. 즉, PDB는 원본이나 복사본이어야 합니다. 컴파일러에서는 이진 파일을 만들 때 요소 수를 고려하므로 코드가 변경되지 않았는데도 이진 파일의 실제 레이아웃이 변경될 수 있습니다. 자세한 내용은 MSDN 블로그 게시물 Why does Visual Studio require debugger symbol files to *exactly* match the binary files that they were built with?를 참조하십시오.
참고 항목
개념
프로그램 데이터베이스 파일(C#, F# 및 Visual Basic)
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2011년 3월 |
PDB가 정확하게 일치해야 한다는 요구 사항에 대한 정보와 링크를 추가했습니다. |
향상된 기능 관련 정보 |