공용 기호 및 개인 기호

드라이버 또는 다른 프로그램을 빌드할 때 프로그램의 기호는 일반적으로 기호 파일에 저장되지만 일부 이전 컴파일러에서는 실행 파일에 특정 기호를 저장합니다. 디버거가 프로그램을 분석하는 경우 프로그램의 기호에 액세스해야 합니다.

일반적으로 기호 파일에는 다음 기호가 포함되거나 모두 포함될 수 있습니다.

  • 모든 함수의 이름 및 주소

  • 모든 데이터 형식, 구조 및 클래스 정의

  • 전역 변수의 이름, 데이터 형식 및 주소

  • 지역 변수의 이름, 데이터 형식, 주소 및 범위

  • 각 이진 명령에 해당하는 소스 코드의 줄 번호

일부 프로그램 개발자는 이 모든 정보를 고객과 공유하는 것이 불편할 수 있습니다. BinPlace를 사용하여 기호 파일의 기호 양을 줄일 수 있습니다.

함수 이름 및 전역 변수와 같은 일부 기본 기호는 가장 기본적인 디버깅에도 필요합니다. 이를 공용 기호라고 합니다. 데이터 구조 이름, 하나의 개체 파일에만 표시되는 전역 변수, 지역 변수 및 줄 번호 정보와 같은 기호는 디버깅에 항상 필요하지는 않지만 보다 심층적인 디버깅 세션에 유용합니다. 이를 프라이빗 기호라고 합니다.

프라이빗 기호와 공용 기호를 모두 포함하는 기호 파일을 전체 기호 파일이라고 합니다. 공용 기호만 포함하는 기호 파일을 제거된 기호 파일이라고 합니다.

BinPlace는 제거된 기호 파일을 만들 수 있습니다. 공용 기호만 포함하는 새 기호 파일을 만들어 이 작업을 수행합니다. 프라이빗 기호가 제거됩니다("제거됨"). 가장 일반적인 BinPlace 옵션(-a -x -s -n)을 사용하면 제거된 기호 파일이 -s 스위치 다음에 나열된 디렉터리에 배치되고 전체 기호 파일은 -n 스위치 다음에 나열된 디렉터리에 배치됩니다.

BinPlace가 기호 파일을 제거하면 파일의 제거된 버전과 전체 버전에 동일한 서명 및 기타 식별 정보가 제공됩니다. 이렇게 하면 두 버전 중 하나를 디버깅에 사용할 수 있습니다.

참고 BinPlace는 기호 파일이 실행 파일과 동일한 디렉터리에 있을 때 기호 파일에서 프라이빗 기호를 제거하고 BinPlace 명령줄에서 실행 파일의 이름(적절한 옵션과 함께)을 지정합니다. 기호 파일 자체의 이름을 지정하면 안 됩니다. 이렇게 하면 BinPlace에서 파일을 변경하지 않고 이동할 수 있습니다.

기호 파일에 프라이빗 기호가 포함되어 있는지 확인해야 하는 경우 SymChk 도구를 사용할 수 있습니다. SymChk는 Windows용 디버깅 도구 패키지의 일부입니다. 자세한 내용은 SymChk 및 Windows 디버깅을 참조하세요.

드라이버를 Windows 하드웨어 인증 프로그램에 제출하는 경우 Microsoft와 개인 기호를 공유하지 않으려는 경우 제거된 기호 파일을 제출할 수 있습니다. BinPlace에서 제거된 기호 파일은 일반적으로 기밀로 간주되는 드라이버 아키텍처의 일부를 노출하지 않습니다. 자세한 내용은 Windows 하드웨어 인증 프로그램을 참조하세요.