[우분투] gdb의 ddd 라는 디버거 대신 nemiver Develop Tip

gcc가 나오고부터 아마도 제일 많이 사용한 디버거는 gdb 입니다.
지금과 같은 GUI 가 나오기 전부터 터미널에서 gdb를 이용한 디버깅을 한 기억이 있습니다.

1996년도에는 국립국어연구원의 전자사전 편찬 시스템을 만드는데,
타이콤이라는 국산 주전산기로 작업을 진행했었고,
이때는 정말로 HP-UX에서 모두 잘 도는 소스를 돌리는데도
잘 실행되지 않아 gdb로 몇날 며칠을 헤메었던 기억이 있습니다.
(결론은 system call인 realloc 커널 버그였었다는...ㅠㅠ)

이와 같은 gdb를 위한 GUI용 디버거가 있었으니, DDD
(왠지 해충 박멸을 위한 살충제가 생각나는...)라는 것이 있습니다.

Data Display Debugger 라는 것입니다.
그런데 이 디버거가 워낙 오래된 Xlib를 이용하다보니,
소스 상의 한글도 안 보이고, 폰트 설정도 어렵고 등등
어려운 점이 많이 있습니다.

그런데 바로, 그 대안으로 사용할 훌륭한 GUI 디버거를 발견했습니다.

Nemiver 라는 것입니다.


우분투에서의 설치는 지극히 간단합니다.

$ sudo apt-get install nemiver

약 33.7 메가 설치를 하는군요. 그놈용이라 했는데 제가 애용하는 LXDE에서도 잘 됩니다~ ^^

그 다음, 아주 간단한 k=i+j 라는 C 코드를 foo.c 라고 작성했습니다.

#include <stdio.h>

int main()
{
    int i, j, k;

    i = 1, j = 2;
    k = i + j;
    printf("%d + %d = %d\n", i,j,k);
    return 0;
}


위와 같이 -g 옵션을 주고 foo 실행파일을 만든 다음,

$ nemiver foo

와 같이 gdb나 ddd 와 똑같이 실행하면 됩니다.

그러면,

위와 같이 main의 첫 줄에 브레이킹 포인트가 걸리고 디버깅 할 수 있는데요, 전 큰 폰트가 싫거든요~?

메뉴에서 Preferences를 선택하고,

위와 같은 것을,

위와 같은 식으로 설정했습니다. (최근에는 거의 모든 OS에서 코드는 '나눔고딕코딩' 폰트로 보고 있습니다)

또한 소스와 실행파일이 다른 위치에 있다면 위와 같이 소스 폴드를 지정해서 넣을 수 있습니다.
(gdb의 -d 옵션처럼)

Next 명령은 F6 이고, Step Into는 F7 입니다.

이제 소스를 약간 수정해서 한글 출력이 되도록 해보았습니다.
(디폴트 인코딩은 ko_KR.UTF-8 입니다)

한글도 잘 됩니다.


어느분께는 도움이 되셨기를....


덧글

  • 死海文書 2014/02/13 15:43 # 답글

    오, 좋은 자료 감사합니다. 이제 리눅스에서도 좀 편하게 디버그가 되겠네요.
  • 지훈현서아빠 2014/02/13 16:21 #

    도움이 되셨다니 저의 보람입니다.~~ ^^
  • 긁적 2014/02/13 17:02 # 답글

    호오.. 좋은 자료 감사합니다. (2)
  • 지훈현서아빠 2014/02/13 17:41 #

    ㅎㅎ 감사합니다~ ^^
  • 김가가 2014/02/21 08:56 # 삭제 답글

    좋은 자료 감사합니다. 잘 참고할게요 !
  • 지훈현서아빠 2014/02/21 08:58 #

    도움이 되셨다니 저의 보람입니다~ ^^
  • 소한 2014/05/12 11:17 # 삭제 답글

    gdb 아예 쓸 줄 몰라서 검색했는데 좋네요 좋은 정보 감사합니다
  • 지훈현서아빠 2014/05/12 12:07 #

    도움이 되셨다니 저의 보람입니다~~
  • 선빈 2015/05/19 10:55 # 삭제 답글

    좋은 정보 감사합니다. (__)
  • 지훈현서아빠 2015/05/19 13:45 #

    도움이 되셨다니 저의 보람입니다~
  • 인후 2016/04/17 20:11 # 삭제 답글

    혹시 네마이버 사용시에 C언어로 작성한 소스코드가 아니라 바로 어셈블된 코드가 나오는데 제가 뭘 잘못설정했길래 이럴까요 ㅠㅠ;;;
  • 지훈현서아빠 2016/04/17 22:01 #

    gcc -g 옵션을 주어 디버깅 심볼 정보를 주어야 합니다.
  • ThanksMan 2016/08/31 23:42 # 삭제 답글

    좋은 정보 감사드립니다 ^_^
  • 지훈현서아빠 2016/09/01 09:53 #

    도움이 되셨다니 저의 보람입니다. ^^
  • Mikasa 2018/12/03 22:45 # 삭제 답글

    여러개의 c파일에 대해서 디버깅을 하는 경우에는 어떻게 해야할까요?
    makefile을 만들어서 해봤으나... nemiver를 키면 소스가 뜨지를 않아서요...
  • 지훈현서아빠 2018/12/03 23:56 #

    여러개의 C 소스로 되어 있더라도 결국은 link 되어 하나의 a.out 이 되지 않나요?
    그렇다면 해당 소스가 지정되어 있으면 동일하게 나오던데요..
    그냥 gdb의 GUI 버전이라 생각하면 될 듯 합니다만...
댓글 입력 영역

구글애드텍스트