gdb TUI (Text User Interface) – 소스코드보면서 동시에 디버깅하기

gdb 의 tui 기능을 사용해보셨나요 ?
TUI 는 Text User Interface 의 준말로 마치 window 나 GUI 처럼 명령을 수행할 수 있도록 만든 gdb 의 User Interface 를 말합니다. 내부적으로 curses library 를 이용한 것 같은데 정확히는 모르겠습니다.

그동안 gdb 는 많이 사용해왔지만 이건 몰랐는데, 오늘 동료가 알려준 tui 기능이 참 좋아서 앞으로 자주 사용할 것 같습니다.

사용법은 다음과 같습니다.

(1) 간단한 코드를 작성한 후 -g 옵션을 주고 컴파일합니다.

sh> cat aa.c
#include <stdio.h>

void func2(int arg)
{
    printf("ok [%d]\n", arg);
}

void func1(int arg)
{
    int  b;

    b = arg;
    func2(b);
}

int main()
{
    int  a;

    a = 10;
    func1(a);
}

sh> gcc -g aa.c

(2) 다음과 같이 tui 옵션을 주고 gdb 를 실행합니다.

sh> gdb -tui ./a.out

(3) 다음과 같이 cmd(command)창과 src(Source)창으로 분리되어 gdb 명령어를 수행하면서 동시에 소스코드를 볼 수 있습니다. 현재 실행 중인 라인이 소스창에 표시되어 훨씬 더 디버깅이 수월합니다. gdb command 창에서는 보통 gdb 를 사용하듯이 명령어를 수행하면 됩니다.

(4) 만약 소스코드를 화면에 보이는 부분 이외의 부분을 보고 싶을 때는 focus src 라고 명령어를 수행하면 src 창쪽으로 focusing 이 되어 방향키로 위아래 소스를 이동하면서 볼 수 있습니다. 다시 command 창으로 focus 를 이동하고 싶으면 focus cmd 라고 수행하면 됩니다.

또 한가지 알아두시면 좋은 것이 있습니다.
그냥 평소처럼 TUI 기능 말고 gdb 로 디버깅을 하시다가 문득 TUI 모드로 변경하고 싶으시다면, gdb 상태에서 그냥 ctrl+xa 를 누르시면 TUI 모드로 자동 전환됩니다. 요것도 아주 편리합니다.

tui 옵션없이 gdb 상에서 소스를 보려면 list 명령을 사용해야한다는건 이미 알고 계실텐데, 요건 좀 한눈에 들어오는 맛이 없어서 좀 불편하죠. 뭐 적응되면 괜찮지만요. ^^

참 직관적으로 쉽게 만들어졌죠 ?  자주 사용해보세요.
강추합니다~ ^^

You may also like...

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x