sudo apt-get update
sudo apt-get install gdb

gcc 컴파일 시 -g 옵션을 부여해야 함.
-g 옵션

gdb execfilename
명령어를 통해 gdb 로 실행파일을 실행시킨다.

b main
이후 디버깅 진행시 필요한 곳에 break point 를 찍어준다.

run
run 명령어 입력 시 필요한 txt 파일등을 입력.
필요하지 않은 경우 입력 없이 run 만 진행한다.

현재 가장 마지막에 보이는 줄을 실행시킬 옵션.

위의 스크린샷 에서 가장 마지막의 fprintf() 구문을 실행시키려면 next나 n을 입력하면 된다.
하지만 next 를 통해 실행 시킬 시
현재 실행시킬 부분이 함수로 이루어진 부분이라면 함수 실행을 모두 보여주지 않고, 바로 다음줄로 넘어간다.

n 입력 시

66번 줄로 이동한 모습
next, n 명령어는 함수 실행을 건너뛰었지만, step, s 명령어를 사용하면 함수 안에 들어가서 모든 함수 실행을 살펴볼 수 있다.

현재 가장 마지막 줄의 getToken 함수의 안으로 들어가 실행 경과를 살펴보려면 step, s 입력하면 된다.

step 을 통해 getToken 함수로 들어온 모습
n, s 를 입력해두고 enter 만 입력해도 앞의 명령어가 그대로 계속 유지되면서 실행됨

GDB 실행 시 한줄 씩 밖에 못보지만, 여러줄을 보고 싶다면 tui 모드를 사용하면 된다.
gdb -tui ./myprogram 명령어를 통해 실행 시키던가

이 화면에서 Enter

break point 찍혀있는 모습
tui enable 명령어를 입력하면 전환이 가능하다.

tui 명령어 사용법도 잘 나와있음.

print myvar

현재 변수의 상태를 보고싶다면 print 명령어 사용.
display myvar
어떤 변수를 계속해서 지켜보고 싶다면 display 명령어를 사용.

print 하지 않아도 s 나 n 을 사용할 때마다 변수 상태 변화가 보인다.
display num
그만 보고 싶다면 display 를 통해 변수에 부여된 번호를 undisplay 명령어로 실행

bt

가장 위에 있는게 현재 실행중인 함수

중간에 종료하고 싶으면 exit 사용
gdb 와 동일하게
sudo apt-get update
sudo apt-get install lldb

기본적인 사용법은 gdb랑 똑같음.
tui 대신 gui 모드가 존재.

gui 입력 시

gui 모드 실행.
gui 모드 실행 시 s, n 입력만으로 다음으로 넘어가기가 가능하다.
F6을 통해 도움말 보면서 실행시키자.
본인도 gui 는 익숙하지 않음.