GDB를 이용해 간간히 디버깅 하긴 했지만, 자주 사용하지 않아서 익숙하지 않았다. 앞으로 사용할 때마다 검색시간을 줄이기 위해 내가 사용하는/했던 gdb 명령어를 정리해놓기로 했다.
명령어를 정리하다가 마스코트를 찾아보았는데, gdb 마스코트는 위 그림의 금붕어이고, 이유를 찾아보니 벌레(버그)를 잡아먹고 물을 쏘아 벌레를 죽인다나 뭐라나.. 아무튼 그렇다고 한다.
급한 분들을 위한 cheat sheet
사전 조건
컴파일 시 -g 옵션을 주어야 함.
GDB 실행
디버깅하기 위해 가장 먼저 해야 할 것은 해당 프로세스를 대상으로 gdb를 실행해야 한다.
여기서부터 설명되는 명령어는 대부분 단축어가 있다.
단축이 되는 글자를 파란색으로 표시하겠다.
중단점 설정/확인/해제
break : 중단점을 설정한다.
info break : 중단점을 확인한다.
clear : 중단점을 지정해 지운다.
delete : 중단점을 지운다.
disable / enable : 중단점을 활성화/비활성화한다.
<ctrl + c> : 프로세스 가 실행 중 중단점에 도달하지 않을 때 사용하여 일시 중단 가능하다.
프로세스 실행
run : 프로세스를 새로 실행한다. 이미 실행 중이라면 재시작한다.
continue : 마지막 중단 지점에서 다음 중단점 까지 프로세스를 재개한다.
next : 실행 중인 프로세스를 한 줄 실행한다. 함수 실행 시 내부로 진입 X
step : 실행 중인 프로세스를 한 줄 실행한다. 함수 실행 시 내부로 진입
finish : 현재 함수를 수행하고 빠져나간 후 리턴 값을 출력한다.
Call Stack(콜 스택) 확인
backtrace : 현재 위치의 함수 call stack을 출력한다.
값 출력 / 변경
print : 변수/주소 등을 출력한다
display : 매 실행(step, next, continue 등) 마다 출력한다.
set : 변수/주소 등에 값을 할당한다.
기타
return : 현재 함수를 수행하지 않고 빠져나간다.
list : 소스 파일을 출력한다.
Reference
이상 많이 썼던 것만 정리해서 모아 보았다. 종종 업데이트 해야겠다.
'Programming > Debug' 카테고리의 다른 글
Cachegrind - cache, branch prediction 측정/분석/프로파일링 (0) | 2021.04.15 |
---|
댓글