맞는데 왜 틀릴까..?

Linux

[리눅스] 시스템 프로그래밍 환경 - gdb 디버거

안도일 2022. 10. 16. 22:06

gdb

 

가장 대표적인 디버거

정지점 설정, 한 줄씩 실행, 변수 접근 및 수정, 함수 탐색, 추적(tracing) 기능

 

 

gdb 사용을 위한 컴파일

 

-g 옵션을 이용하여 컴파일함

gcc -g -o long long.c ## 컴파일

gdb long ## 소스파일이 아닌 실행파일로 실행

 

 

명령어

 

l [줄번호] : 지정된 줄 프린트

l [파일명]:[함수명]  : 지정된 파일의 함수를 프린트

 

b [함수] : 함수 시작 부분에 정지점 설정

b [n] : n번 줄에 정지점을 설정

b +[n] : 현재 줄에서 n개 줄 이후에 정지점 설정

info b :  현재 설정된 정지점 출력

clear [줄번호] : 해당 정지점을 삭제

d :  모든 정지점을 삭제

 

 

run : 현재의 인수를 사용하여 프로그램 실행

run [args] : 새로운 [인수]를 가지고 프로그램 실행

continue : 현재 위치에서 프로그램 계속 실행

next : 한 줄씩 실행시킨다. 이때 함수를 포함하고 있으면 함수를 수행시킨다

next  [n] : [n]줄을 실행시킨다

step : 한 줄씩 실행시킨다. 이때 함수를 포함하고 있으면 함수 내부로 들어가서 한 줄씩 실행한다

step [n] : [n]줄을 실행시킨다

break [line number] : 라인 번호에서 프로그램 실행을 멈추게 한다

break [함수명] : 함수 내부의 첫 번째 라인에서 프로그램의 실행을 멈추게 한다

quit : gdb를 종료 시킨다

 

list : 현재 위치에서 소스파일의 내용을 10줄 보여준다

list [시작줄], [끝줄] : [시작줄]과 [끝줄] 사이의 소스파일 내용을 보여준다

 

p [변수명] : 해당 변수 값 프린트

 

display [변수명] : 변수명과 함께 다음 실행에도 계속 결과 제시