디버깅 기호

Debug symbol

디버그 기호는 공유 라이브러리 또는 실행 파일과 같은 개체 파일의 기호 테이블에 추가 정보를 첨부하는 특별한 종류의 기호입니다. 정보를 통해 심볼릭 디버거는 변수와 루틴을 포함한 식별자의 이름과 같은 바이너리의 소스 코드에서 정보에 액세스할 수 있습니다.

심볼 정보는 모듈의 바이너리 파일과 함께 컴파일되거나 별도의 파일로 배포되거나 컴파일 및/또는 링크 중에 간단히 폐기될 수 있습니다.

정보는 크래시된 응용 프로그램이나 기타 [1]장애를 조사 및 수정하는 데 도움이 됩니다.

삽입 기호

일반적으로 디버깅 기호에는 함수 또는 전역 변수의 이름뿐만 아니라 기호가 발생하는 소스 코드 파일의 이름 및 정의된 줄 번호도 포함됩니다.기타 정보에는 기호의 유형(정수, 부동, 함수, 예외 등), 범위(블록 스코프 또는 글로벌 스코프), 크기 및 클래스의 이름, 메서드와 멤버 등이 포함됩니다.이 모든 추가 정보는 특히 파일 이름 및 회선 번호 등 상당한 공간을 차지할 수 있습니다.따라서 디버깅 기호가 있는 바이너리는 제거된 파일 크기의 [2]몇 배 정도로 커질 수 있습니다.이러한 추가 크기를 피하기 위해 대부분의 운영 체제 배포에서는 모든 디버깅 기호가 제거된 바이너리가 출하됩니다.예를 들어 unix에서 strip 명령어를 사용하면 이 작업을 수행할 수 있습니다.

일부 컴파일러는 심볼 디버깅 정보를 바이너리와 함께 배치하지 않고 별도의 파일로 출력합니다.

SysV ABI

SysV Application Binary Interface에는 디버깅 기호 포맷에 대한 사양이 포함되어 있습니다.이것에 의해, 호환성이 있는 컴파일러나 어셈블러는 표준화된 포맷으로 디버깅 심볼을 작성할 수 있습니다.또, GDB등의 디버거에서는, 이러한 심볼에 액세스 해 표시할 수 있습니다.예를 들어 중요한 디버깅 정보의 일부는 예외 프레임과 관련된 기호뿐만 아니라 해당 기호(함수 또는 글로벌 변수)를 정의하는 소스 파일 내의 코드 행을 포함한다.

Microsoft 디버깅 기호

Microsoft 컴파일러는 디버깅 기호를 포함하는 PDB 파일이라는 파일을 생성합니다.CD/DVD에 수록되어 있는 PDB를 트러블 슈팅에 사용할 수 있도록 출하하는 기업도 있습니다.또, Microsoft 나 Mozilla Corporation등의 기업에서는, 디버깅 기호를 인터넷에서 다운로드할 수 있습니다.WinDBG 디버거 및 Visual Studio IDE는 필요에 따라 Windows DLL의 디버깅 기호를 자동으로 다운로드하도록 구성할 수 있습니다.마이크로소프트가 배포하는 PDB 디버깅 기호에는 공용 기능, 전역 변수 및 해당 데이터 유형만 포함됩니다.Mozilla Corporation은 비슷한 인프라스트럭처를 가지고 있지만 완전한 디버깅 정보를 배포합니다.

Microsoft 와 Mozilla 는 모두 소스 코드를 제공합니다(Microsoft 는 대부분의 컴포넌트 등 특정 컴포넌트를 제공합니다).NET Framework, 반면 Mozilla는 완전한 소스를 제공하여 디버깅을 용이하게 합니다.

사과

Apple 플랫폼에서는 빌드 프로세스 중에 dSYM 파일로 디버깅 기호가 선택적으로 출력됩니다.Apple은 진단 파일의 주소가 사람이 읽을 수 있는 [3]값으로 대체되는 것을 나타내기 위해 "심볼리케이트"라는 용어를 사용합니다.

역사

심볼릭 디버거는 메인프레임 시대부터 존재해 왔으며, 심볼릭 디버깅 정보를 표시하는 적절한 컴퓨터 디스플레이가 처음 도입된 이후(심볼릭 덤프도 종이 위에 표시됨)부터 존재해 왔습니다.고급 컴파일 언어로 제한되지 않았으며 어셈블리 언어 프로그램에도 사용할 수 있었습니다.IBM/360의 경우, 이러한 코드는 "SYM 카드"를 포함하는 객체 코드를 (요청 시) 생성했습니다.이들은 보통 프로그램 로더에 의해 무시되었지만 실행 가능한 논리 코드와 동일한 프로그램 라이브러리에 보관되어 심볼릭 디버거에 유용했다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Debugging with Symbols". Windows Dev Center. Microsoft. Archived from the original on 2020-01-11. Retrieved 2020-01-11.
  2. ^ "What are Symbols For?". TechNet. Microsoft. 2008-07-15.{{cite web}}: CS1 maint :url-status (링크)
  3. ^ "Understanding and Analyzing iOS Application Crash Reports". iOS Developer Library. Apple, Inc. 2018-01-08 [2009-01-29]. Technical Note TN2151. Archived from the original on 2019-12-19. Retrieved 2020-01-11.

공용 기호 및 원본 서버