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 명령을 사용해야한다는건 이미 알고 계실텐데, 요건 좀 한눈에 들어오는 맛이 없어서 좀 불편하죠. 뭐 적응되면 괜찮지만요. ^^
참 직관적으로 쉽게 만들어졌죠 ? 자주 사용해보세요.
강추합니다~ ^^
덕분에 좋은 내용 잘 보고 갑니다.
정말 감사합니다.