DWARF
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
DWARF는 디버깅 정보를 저장하는 데 사용되는 파일 형식이다. 초기 버전은 저장 공간을 많이 사용했지만, 이후 버전에서는 데이터 압축 및 C++ 지원과 같은 기능이 추가되었다. DWARF는 디버깅 정보 엔트리(DIE)라는 자료 구조를 사용하며, 트리 구조를 형성하여 변수, 타입, 프로시저 등을 나타낸다. 공간 절약을 위해 바이트코드 명령어를 사용하며, 코드 위치와 소스 코드 위치를 매핑하는 줄 번호 테이블과 콜 프레임 정보 테이블을 포함한다. Libdwarf는 DWARF 디버깅 정보에 접근할 수 있는 라이브러리이다.
더 읽어볼만한 페이지
- 디버깅 자료 형식 - Stabs
Stabs는 1980년대에 개발된 디버깅 정보 인코딩 방식으로, a.out 형식의 한계를 극복하기 위해 심볼 테이블에 정보를 인코딩했으며, 유닉스 시스템에서 사용되다가 DWARF 포맷으로 대체되었다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
DWARF | |
---|---|
기본 정보 | |
표어 | God's Will First (하느님의 뜻이 먼저다) |
위치 | 미크로네시아 |
수도 | 공식적인 수도는 없으나, 정부 기능은 야렌에 위치 |
공용어 | 나우루어, 영어 |
정치 | |
정치 체제 | 공화국, 의회 민주주의 |
대통령 | 데이비드 아데앙 |
의회 | 나우루 의회 |
역사 | |
독립 | 1968년 1월 31일 (영국으로부터) |
지리 | |
면적 | 21 km² |
해안선 | 30 km |
인구 | |
인구 (2023년) | 약 10,876명 |
인구 밀도 | 517.9명/km² |
경제 | |
통화 | 오스트레일리아 달러 (AUD) |
GDP (명목) | 1억 6,060만 달러 (2021년) |
1인당 GDP (명목) | 14,767 달러 (2021년) |
기타 | |
시간대 | UTC+12 |
ISO 3166-1 alpha-2 | NR |
국가 코드 최상위 도메인 | .nr |
국제 전화 코드 | +674 |
2. 역사
DWARF는 디버깅 정보 형식의 표준으로, 여러 버전을 거치며 발전해왔다. DWARF-2는 자료 크기를 줄이기 위한 다양한 인코딩 기법을 도입했다.[12] 그러나 DWARF는 바로 널리 사용되지 않았다. 썬 마이크로시스템즈가 ELF를 솔라리스에 채택했을 때 stabs를 계속 사용했고, 이는 "stabs-in-elf"로 불렸다. 리눅스도 이를 따라 DWARF-2는 1990년대 후반까지 일반적으로 채택되지 않았다.
자유 표준 그룹의 DWARF 워크그룹은 2006년 1월에 DWARF 버전 3을,[2] 2010년에는 DWARF 위원회가 버전 4를,[13] 2017년 2월에는 버전 5를 발표했다.[4][5]
2. 1. 초기 버전 (DWARF-1)
DWARF의 첫 버전은 저장 공간을 지나치게 많이 사용한다는 단점이 있었다.[12] DWARF는 바로 널리 받아들여지지 않았다. 예를 들어 썬 마이크로시스템즈가 ELF를 솔라리스의 일부로 채택했을 때, stabs를 계속 사용하기로 결정했다. 이는 "stabs-in-elf"로 불렸다. 리눅스도 이와 비슷하게 DWARF-2는 1990년대 후반까지 일반적으로 사용되지 않았다.2. 2. DWARF-2
DWARF의 첫 버전은 지나친 저장 공간을 사용하였지만, 호환되지 않는 다음 버전인 DWARF-2는 자료 크기를 줄이기 위해 다양한 인코딩 기법들을 추가하였다.[12] DWARF는 즉시 범용적으로 받아들여지지 않았다. 예를 들어 썬 마이크로시스템즈가 ELF를 솔라리스의 한 부분으로 채택하였을 때, stabs를 계속 사용하기로 하였는데, 이것은 "stabs-in-elf"로 삽입되었다. 리눅스도 이를 따라 DWARF-2는 1990년대 후반까지도 일반적으로 채택되지 않았다.2. 3. DWARF-3
자유 표준 그룹(Free Standards Group)의 DWARF 워크그룹은 2006년 1월에 DWARF 버전 3을 릴리즈하였으며,[12] C++(C++) 이름공간, 포트란 90 할당 가능 데이터 및 추가적인 컴파일러 최적화 기법들에 대한 지원을 추가하였다.2. 4. DWARF-4
자유 표준 그룹(Free Standards Group)의 DWARF 워크그룹은 2006년 1월에 DWARF 버전 3을 출시했다.[12] 2010년에는 DWARF 위원회가 DWARF 버전 4를 공개했는데,[13] 이는 개선된 데이터 압축, 최적화된 코드에 대한 더 나은 명세, C++ 언어의 새로운 특징들을 지원한다.[13]2. 5. DWARF-5
DWARF 형식의 버전 5는 2017년 2월에 발표되었다.[4][5] 이는 더 나은 데이터 압축, 실행 파일에서 디버깅 데이터 분리, 매크로 및 소스 파일에 대한 향상된 설명, 기호에 대한 더 빠른 검색, 최적화된 코드 디버깅 개선, 그리고 기능 및 성능의 수많은 개선 사항을 포함한다.3. 구조
DWARF는 디버깅 정보 엔트리(DIE)라는 자료 구조를 사용하여 변수, 자료형, 프로시저 등을 나타낸다. DIE는 태그와 속성(키-값 쌍)을 가지며, 중첩되어 트리 구조를 형성할 수 있다.[6]
심볼릭 디버거는 코드 위치와 소스 코드 위치를 매핑하는 줄 번호 테이블, 콜 스택에서 위치를 찾을 수 있게 하는 콜 프레임 정보 테이블과 같은 큰 테이블들을 필요로 한다. DWARF는 공간을 절약하기 위해 이러한 테이블들을 간단하고 특수한 목적의 유한 상태 기계를 위한 바이트코드 명령어들로 나타낸다.[6]
3. 1. DIE (Debugging Information Entry)
DWARF는 디버깅 정보 엔트리(DIE)라는 자료 구조를 사용하여 변수, 타입, 프로시저 등을 나타낸다. DIE는 태그(예: `DW_TAG_variable`, `DW_TAG_pointer_type`, `DW_TAG_subprogram`)와 속성(key-value 쌍)을 가지며, 내부(자식) DIE를 가질 수 있어 트리 구조를 형성한다. DIE 속성은 트리 내에서 다른 DIE를 가리킬 수 있는데, 예를 들어 변수를 나타내는 DIE는 변수의 타입을 나타내는 DIE를 가리키는 `DW_AT_type` 엔트리를 갖는다.[6]3. 2. 테이블 표현
공간을 절약하기 위해, 기호 디버거에 필요한 두 개의 큰 테이블은 간단하고 특수한 용도의 바이트코드 명령어로 표현된다. 코드 위치와 소스 코드 위치를 매핑하는 라인 번호 테이블은 어떤 명령어가 함수 프롤로그와 에필로그의 일부인지도 명시한다. 호출 프레임 정보 테이블을 사용하면 디버거가 호출 스택에서 프레임을 찾을 수 있다.[6]4. 도구
Libdwarf는 실행 파일 및 오브젝트 파일의 DWARF 디버깅 정보에 접근할 수 있는 라이브러리이다.
참조
[1]
웹사이트
Introduction to the DWARF Debugging Format
https://dwarfstd.org[...]
2012-04
[2]
간행물
DWARF Version 3 Standard Released
http://dwarfstd.org/[...]
Free Standards Group
2006-01-04
[3]
웹사이트
DWARF Version 4 Released
http://dwarfstd.org/[...]
The DWARF committee
2010-06-16
[4]
웹사이트
DWARF Version 5 Standard Released
http://dwarfstd.org/[...]
The DWARF committee
2017-02-15
[5]
웹사이트
DWARF 5 Standard
http://dwarfstd.org/[...]
The DWARF committee
2017-02-15
[6]
문서
.debug_info ibm documenation
https://developer.ib[...]
[7]
웹사이트
libdwarf: A Consumer Library Interface to DWARF
https://www.prevande[...]
2023-12-06
[8]
웹사이트
Introduction to the DWARF Debugging Format
http://www.dwarfstd.[...]
2012-04
[9]
웹사이트
elfutils — Packages — GNU Guix
https://packages.gui[...]
2023-02-17
[10]
간행물
DWARF Version 3 Standard Released
http://dwarfstd.org/[...]
Free Standards Group
2006-01-04
[11]
웹인용
Introduction to the DWARF Debugging Format
http://www.dwarfstd.[...]
2012-04
[12]
보도자료
DWARF Version 3 Standard Released
http://dwarfstd.org/[...]
Free Standards Group
2006-01-04
[13]
웹인용
DWARF Version 4 Released
http://dwarfstd.org/[...]
The DWARF committee
2010-06-16
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com