🏷️gdb
📌개념
- GNU에서 만든 매우 강력한 디버거다.
- 매우 단순해서 익히기 쉽다.
- interactive mode로 동작한다.
📌긴 명령어를 위한 편의 기능
- gdb는 긴 명령어를 위한 여러 편의 기능을 제공한다.
1. 축약형
- CISCO IOS처럼 명령어 축약형을 제공한다.
- 🔍ex)
info b
: info breakpoints
명령어의 축양형이다.
i r
2. 자동완성
TAB
키로 자동완성 기능을 지원한다.
TAB
을 2번 누르면 인자들의 리스트가 출력된다.
3. 히스토리
위아래(↓, ↑)
방향키로 이전에 입력했던 명령어 히스토리를 찾아볼 수 있다.
🏷️gdb를 사용하기 전에
- gdb로 디버깅을 하려면 gcc로 컴파일 시
-g
옵션을 넣어줘야 한다.
- 그렇지 않으면 어셈블리어로 컴파일해야 하는 불상사가 발생한다.
-g
옵션을 붙이게 되면 컴파일되어 생성되는 실행파일에 여러 디버깅 정보가 삽입된다.
- 여러 디버깅 정보는 다음과 같다.
- 심볼 문자열
- 심볼의 주소
- 컴파일에 사용된 소스 파일
- 컴파일된 각각의 instruction이 어떤 소스 파일의 어떤 행에 매칭되는가
-g
옵션을 사용 할 땐 -O
(최적화 옵션)를 사용하지 않는 것이 좋다.
- 🖇️cf.
-O
stands for Optimization
-O
옵션을 사용하면 최적화 과정에서 어셈블리 코드 자체에 많은 변경이 가해진다.
- 이는 C소스 한 행과 대응하는 어셈블리 묶음이 흐트러지기 때문에 디버깅을 방해한다.