GDB 사용법/팁 모음

1. 기본적인 사용법

터미널에서 시작할 때

$ gdb 프로그램이름

한 뒤, 적당히 필요한 옵션들을 준다.

ex) b f 라고 한다면 함수 f를 시작할 때 breakpoint가 걸린다

그 다음 r 인자1 인자2 … 와 같이 실행하면 인자1 인자2 ..를 준 상태에서 프로그램 실행이 시작됨.

 

2. gdb로 STL 컨테이너들 보기

http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

개인적으로 Wndows에서 mingw에 있던 mingw32-gdb.exe를 쓰는지라, .gdbinit 파일을 어디 두어야 하는지를 계속 찾다가 그냥 실행하는 폴더에 두니까 잘 되더라 –;

예를 들면, 내가 gdb로 소스들을 디버깅할 위치인 c:\users\aqjune\Desktop\workspace에다가 .gdbinit를 두고 gdb를 실행하니까 pvector 명령어가 잘 먹더라 이말씀

 

3. assert가 떴을 때 멈추게 하기

gdb에서는 자동으로 멈추게 하더라.

이게 assert가 떴을 때 gdb에서 break이 걸리지 않고 그냥 프로그램이 끝나는 경우가 있는데, 컴파일할 때 -g 옵션을 안 주면 안 멈추더라 이말씀

만약 -g 옵션을 안 주고 컴파일했을 때도 assert에서 프로그램이 멈추게 하고 싶으면, “b abort”라고 입력하면 된다.

 

4. Break 걸렸을 때, call stack에서 왔다갔다 하기

b를 걸거나 assert에서 걸리거나 해서 멈추었을 경우, info stack 이라고 치면 call stack이 쭉 나온다.

현재 관찰하고자 하는 call frame에 가고 싶을 때는, frame 14와 같이 입력하면 call stack에서 14번째 함수로 이동함.

여기서 info local 이라고 하면 지역변수 값이 쭉 나오고, p 변수 하면 변수 값이 나온다.

Advertisements

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s