GCC 문서이 -g
옵션을 말해 보세요운영 체제의 기본 형식(stabs, COFF, XCOFF 또는 DWARF 2)으로 디버깅 정보를 생성합니다..
그렇다면 Linux 기본 디버깅 기호 형식은 무엇입니까? 이것을 무엇이라고 부르나요?
업데이트: 방금 15세 소년을 찾았습니다gcc 메일링 리스트 토론당시 네이티브 포맷은 Stabs였고, 이후 DWARF2로의 전환을 고려하고 있었다고 합니다. 그런데 그게 15년 전 일인데... 업데이트가 있나요? =)
답변1
Linux에서 기본값은 이제 Dwarf 2 및/또는 4입니다. 이를 보려면 readelf --debug-dump=info
Fedora에서 디버그 기호(또는 제거된 기호)가 포함된 바이너리에서 실행하십시오. 예를 들어 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 부분이 모두 포함됩니다).