기호 및 기호 파일

애플리케이션, 라이브러리, 드라이버 또는 운영 체제가 연결된 경우 .exe 및 .dll 파일을 만드는 링커는 기호 파일이라는 여러 개의 추가 파일도 만듭니다.

기호 파일에는 이진 파일을 실행할 때 실제로 필요하지 않지만 디버깅 프로세스에 매우 유용할 수 있는 다양한 데이터가 있습니다.

일반적으로 기호 파일에는 다음이 포함될 수 있습니다.

  • 글로벌 변수

  • 로컬 변수

  • 함수 이름 및 진입점의 주소

  • FPO(프레임 포인터 생략) 레코드

  • 원본 줄 번호

이러한 각 항목은 개별적으로 기호라고 합니다. 예를 들어 단일 기호 파일 Myprogram.pdb에는 전역 변수와 함수 이름 및 수백 개의 지역 변수를 포함하여 수백 개의 기호가 포함될 수 있습니다. 종종 소프트웨어 회사는 두 가지 버전의 각 기호 파일, 즉 공용 기호와 프라이빗 기호를 모두 포함하는 전체 기호 파일과 공용 기호만 포함하는 축소된(제거된) 파일을 릴리스합니다. 자세한 내용은 공용 및 프라이빗 기호를 참조하세요.

디버깅할 때 디버거가 디버깅 중인 대상과 연결된 기호 파일에 액세스할 수 있는지 확인해야 합니다. 라이브 디버깅 및 디버깅 크래시 덤프 파일 모두 기호가 필요합니다. 디버그하려는 코드에 대한 적절한 기호를 가져와서 디버거에 로드해야 합니다.

Windows 기호

Windows는 확장명 .pdb를 사용하여 파일에 해당 기호를 유지합니다.

컴파일러와 링커는 기호 형식을 제어합니다. Visual C++ 링커는 모든 기호를 .pdb 파일에 배치합니다.

Windows 운영 체제는 두 가지 버전으로 빌드되었습니다. 무료 빌드(또는 소매 빌드)에는 비교적 작은 이진 파일이 있으며, 확인된 빌드(또는 디버그 빌드)에는 코드 자체에 더 많은 디버깅 기호가 있는 더 큰 이진 파일이 있습니다. 확인된 빌드는 Windows 10 버전 1803 이전 버전의 Windows에서 사용할 수 있었습니다. 이러한 각 빌드에는 고유한 기호 파일이 있습니다. Windows에서 대상을 디버깅할 때 대상의 Windows 빌드와 일치하는 기호 파일을 사용해야 합니다.

다음 표에서는 표준 Windows 기호 트리에 있는 여러 디렉터리를 나열합니다.

디렉터리 에 대한 기호 파일 포함

Acm

Microsoft 오디오 압축 관리자 파일

COM

실행 파일(.com)

CPL

제어판 프로그램

DLL

동적 링크 라이브러리 파일(.dll)

Drv

드라이버 파일(.drv)

EXE

실행 파일(.exe)

Scr

화면 보호기 파일

SYS

드라이버 파일(.sys)