PDB 파일은 무엇을 위한 것인가요?
PDB 파일: 모든 개발자가 알아야 할 사항
PDB 시나리오 예시:
PDB 파일이 무엇인가요?
대부분의 개발자는 PDB 파일이 소프트웨어 디버깅을 돕기 위해 사용된다는 것을 알고 있을 것입니다. 하지만 그가 정확히 어떻게 작동하는지는 우리가 잘 모를 수도 있습니다. 이 문서에서는 PDB 파일의 저장 및 내용을 설명합니다. 또한 디버거가 binay에 대응하는 PDB 파일을 찾는 방법과, 해당 소스코드 파일을 찾는 방법도 설명합니다. 이 글은 모든 네이티브 및 관리형 개발자를 위한 것입니다.
시작하기 전에 두 가지 용어를 정의해 보겠습니다: 개발자 자신의 컴퓨터에서 생성된 빌드를 의미하는 private build; 공개 빌드는 공개 빌드 머신에서 생성된 빌드를 의미합니다. 개인 빌드는 비교적 간단한데, PDB와 Binay가 같은 위치에 있고, 보통 문제는 공개 빌드 문제입니다.
모든 개발자가 가장 중요하게 알아야 할 것은 "PDB 파일은 소스 코드만큼 중요하다"는 점이며, 이 없이는 디버거도 할 수 없습니다. 공개 빌드의 경우, 심볼 서버가 모든 PDB를 저장해야 하고, 사용자가 오류를 보고하면 디버거가 binay에서 해당 PDB 파일을 자동으로 찾을 수 있으며, Visual Studio와 Windbg 모두 심볼 서버에 접근하는 방법을 알고 있습니다. PDB와 binay를 심볼 서버에 저장하기 전에, PDB 실행을 소스 인덱스하여 PDB와 소스를 연관시켜야 합니다.
다음 단계는 심볼 서버와 소스 서버 인덱싱이 이미 설정되어 있다고 가정합니다. TFS2010 소스 인덱싱과 심볼 서버 복사처럼 간단하게 할 수 있습니다.
2. PDB 파일의 내용
PDB의 내용을 공식적으로 시작하며, PDB는 공개된 파일 형식이 아니지만, Microsoft는 PDB에서 데이터를 얻는 데 도움을 주는 API를 제공합니다.
네이티브 C++ PDB에는 다음과 같은 정보가 포함되어 있습니다: * 공용, 비공개, 정적 기능 주소; * 전역 변수의 이름과 주소; * 매개변수 및 로컬 변수 이름과 스택 오프셋; * 클래스, 구조, 데이터의 타입 정의; * x86에서 네이티브 스택을 탐색할 때 사용할 수 있는 프레임 포인터 누락 데이터; * 소스 코드 파일의 이름과 줄 수;
.NET PDB는 두 가지 정보만 포함합니다: * 소스 코드 파일명과 줄 수; * 그리고 국소 변수의 이름; * 다른 모든 데이터는 이미 . NET 메타데이터;
|