[LINUX] GDB 사용법

강지원·2024년 5월 16일

리눅스 기반 C언어

목록 보기
7/24

GDB

: 디버거

- GDB를 사용하는 이유는 크로스 컴파일하는 경우에 필요하기 때문이다.
- 임베디드 환경에서 주로 크로스 컴파일을 사용해서 임베디드 리눅스 환경에 크로스 gdb만 지원되는 경우가 제법 많다.

컴파일 동작원리

- 기본동작

CPU - 어셈블러 - C컴파일러 -> 리눅스 운영체제 - GCC 컴파일러 -> main() 함수 - printf, ..

- 크로스컴파일

A CPU (컴퓨터)
B CPU (임베디드/ARM) : 컴파일러 X

A CPU - 리눅스 운영체제 - A GCC(A CPU에서 동작하는 프로그램을 만듦) - program1, program2, program3 생성

					  - B GCC(크로스 컴파일러) - C언어 - 기계언어 - B CPU에서 동작

gdb

크로스컴파일에서는 GDB가 제공됨

1. gdb 실행방법

$ gcc 소스파일 //컴파일
$ gcc -g 소스파일 //디버깅을 하기위해서 마킹을 해줘야함 -g 옵션으로
$ gdb -q 실행파일

2. gdb 명령어

(gdb) run //실행

(gdb) l //코드확인(10줄) -> enter 하면 다음 코드 이어서 나옴
(gdb) l 30 //코드 30줄 확인

(gdb) b 5 //브레이크 포인트 5번째 줄로 잡기
(gdb) run //브레이크 포인트 확인

(gdb) p i //변수에 들어있는 값 확인

(gdb) disas main // 어셈블리단 확인가능

(gdb) quit //gdb 종료

* gdb 를 통해 디버깅도 가능하고 어셈블리 소스도 볼 수 있다

컴파일러가 변수를 랜덤으로 메모리주소에 저장한다.
메모리주소와 변수명이 1:1 매칭된다.

0개의 댓글