Linux 기본 디버깅 기호 형식은 무엇입니까?

Linux 기본 디버깅 기호 형식은 무엇입니까?

GCC 문서-g옵션을 말해 보세요운영 체제의 기본 형식(stabs, COFF, XCOFF 또는 DWARF 2)으로 디버깅 정보를 생성합니다..

그렇다면 Linux 기본 디버깅 기호 형식은 무엇입니까? 이것을 무엇이라고 부르나요?


업데이트: 방금 15세 소년을 찾았습니다gcc 메일링 리스트 토론당시 네이티브 포맷은 Stabs였고, 이후 DWARF2로의 전환을 고려하고 있었다고 합니다. 그런데 그게 15년 전 일인데... 업데이트가 있나요? =)

답변1

Linux에서 기본값은 이제 Dwarf 2 및/또는 4입니다. 이를 보려면 readelf --debug-dump=infoFedora에서 디버그 기호(또는 제거된 기호)가 포함된 바이너리에서 실행하십시오. 예를 들어 glibc-debuginfo설치 후 실행하면 readelf --debug-dump=info /usr/lib/debug/bin/gencat.debug다음과 같은 결과가 나타납니다.

 <1><ea>: Abbrev Number: 0
  Compilation Unit @ offset 0xeb:
   Length:        0x5c (32-bit)
   Version:       2
   Abbrev Offset: 0x52
   Pointer Size:  8
 <0><f6>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <f7>   DW_AT_stmt_list   : 0x83
    <fb>   DW_AT_ranges      : 0x0
    <ff>   DW_AT_name        : ../sysdeps/x86_64/crti.S
    <118>   DW_AT_comp_dir    : /usr/src/debug////////glibc-2.21/csu
    <13d>   DW_AT_producer    : GNU AS 2.25
    <149>   DW_AT_language    : 32769   (MIPS assembler)

이는 Dwarf 2 정보 세트입니다( Version:버전 정보는 헤더 참조. 동일한 바이너리에는 Dwarf 2와 Dwarf 4 부분이 모두 포함됩니다).

관련 정보