gdb 사용법

혀누·2021년 12월 30일
2

우당탕탕C

목록 보기
4/5

우선 gdb 를 설치한다. ubuntu 터미널에서 다음 명령어를 입력하면 된다.

sudo apt install gdb

내가 테스트 하고 싶은 파일들이 있는 폴더 (내 경우에는 /pintos/threads/build) 에 들어가서

원래 핀토스 테스트를 실행할때 쓰는 명령어는

pintos -- -q run ${실행하려는 테스트이름}

였다면 이걸 gdb로 실행하기위해서는

pintos --gdb -- -q run ${실행하려는 테스트이름}

로 실행을 하면 된다. 실행하면 중단점을 따로 지정해놓지 않았기 때문에 우선 맨 처음으로 포인터가 가서 대기하고 있을 것이다.

이상태에서 터미널을 하나 새로 연다.

동일하게 내가 테스트 파일을 만들어놓은 폴더로 이동한뒤
(cd /pintos/threads/build)

gdb kernel.o

이 명령어를 실행하면 gdb가 실행되서 터미널에 변화가 보일것이다.

그다음 그 상태에서

target remote localhost:1234

명령어를 사용하면 gdb와 연결되었다. 이후 일반 GDB명령을 실행할 수 있다.

가장 가장 가장 기본적인 gdb 명령어는 다음과 같다.

b {$파일이름}:785  // 파일의 785번째 라인에 중단점을 잡는다.

c // continue 라는 의미로 중단점까지 쭉 진행한다. 

n // next 라는 의미로 함수를 만나면 호출하고 지나간다. (함수안으로 안들어감)

s // step 이라는 의미로 함수를 만나면 안으로 들어간다. 

p {$각종 변수, 포인터} // 해당 변수, 포인터들이 담고있는 내용을 보여준다. 

d // 잡혀있는 모든 중단점을 없앤다. 
profile
개발자(물리)

3개의 댓글

comment-user-thumbnail
2022년 3월 8일

안녕하세요! 포스팅 잘 읽었습니다!
혹시 gdb 띄워져있는 터미널 말고 다른 터미널에서 stack, backtrace 표현된 건 어떻게 하신건지 여쭤봐도 될까요!?
아 그리고 혹시 instruction 단위로 실행할 때 0x0000000000000000 in ?? () 와 같은 에러가 뜨진 않으셨나요!?
감사합니다.

1개의 답글