시스템 프로그래밍 - 리눅스

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