시스템 프로그래밍 - 리눅스
System Programming - program debugging
SeoKyung
2023. 3. 21. 01:04
프로그램에서 사용되는 변수들의 값이 변화되는 것을 추적한다.
기본적으로 printf로 쭉쭉 확인하는 방법이 있다. 물론 확인하기 어려울 수 있다. 그럴 때는 gdb라는 디버깅 프로그래밍을 사용해서 추척해볼 수도 있다.
오늘은 gdb에 대해서 설명할 것이다.
gdb로 프로그램을 디버깅하려면 컴파일을 할때부터 -g를 더해야한다. 예를 들어 (gcc, g++ 둘 다) gcc -g -o ex1 ex1.c 이렇게 한다.
이때 gdb ex1의 커맨드를 입력하면 gdb commands를 이용해 디버깅을 할 수 있다.
gdb commands
b main : break point on main / gdb를 쓸 때는 프로그램을 어디에다가 멈추어야 하는데 보통은 main에서 멈춘다.
r : start the program 프로그램을 시작하고 메인에서 스탑한다.
n : execute the newt statement 한 줄씩 실행 -> n을 치고나서 변수값 찍어보고 반복.
p x1 : show the value of variable x1 / x1은 변수이름이다. p x1으로 변수값을 찍는 것.
p arr1 : show the contents of array arr1
x/10xb arr1 : show 10 bytes (in hexa) starting from the address of arr1
help : show all commands
help print : show the explanation about print command
q : quit