gdb(1)

명칭
gdb - GNU 디버거

서식

gdb [-help] [-nx] [-q] [-batch] [-cd= dir ] [-f] [-k] [-wcore] [-b bps] [-tty= dev] [-s symfile ] [-e prog ] [-se prog ] [-c core ] [-x cmds ] [-d dir ] [ prog [ core|procID ]]

해설
GDB 를 시작으로 하는 디버거는, 프로그램이 실행중 혹은 크래쉬 했을 때에 그 프로그램의 ``내부''로 무엇이 행해지고 있을까/행해지고 있었는지를 조사하는데 사용됩니다. GDB 는, 4 개의 기능 (더해 이것들을 서포트하는 기능)에 의해 실행중에 버그를 찾아내는 것을 돕습니다.

•   프로그램의 동작을 상세하게 지정해 프로그램을 실행시킨다.

•   지정한 조건으로 프로그램을 정지시킨다.

•   프로그램이 멈추었을 때에, 무엇이 일어났는지 조사한다.

•   버그에 의한 부작용을 수정해, 다른 버그를 조사하기 (위해)때문에 프로그램 상태를 변경한다.

GDB 에서는 C, C++, Modula-2 등으로 쓰여진 프로그램의 디버그를 행할 수 있습니다. GNU Fortran 컴파일러가 완성하면 Fortran 도 서포트됩니다. GDB 는 쉘 명령 gdb 그리고 기동됩니다. 일단 기동하면(자), GDB 명령 quit (을)를 실행해 종료할 때까지, 단말로부터 명령을 계속 읽습니다. gdb 의 on-line help는(gdb 중(안)에서) help 명령을 실행하면 표시됩니다. gdb (은)는 인수나 옵션 없음으로 기동할 수 있습니다만, 대부분, 1 개(살)이나 2 개의 인수를 붙여 기동합니다. 실행 프로그램을 인수로 하는 경우는 이하와 같이 됩니다:

gdb program

또 실행 프로그램과 core 파일의 양쪽 모두를 지정할 수도 있습니다:

gdb program core

만약 실행중의 프로세스의 디버그를 행하고 싶은 경우에는, 제 2 인수로서 core 대신에 프로세스 ID 를 지정합니다:

gdb program 1234

이것은 GDB 를 프로세스 ID 1234 의 프로세스에 접속합니다(이 때 `1234 '라는 이름의 파일이 존재 해서는 안됩니다. GDB 는 우선 core 파일을 최초로 체크하러 가기 때문입니다). 자주(잘) 이용되는 GDB 명령에는 이하와 같은 것이 있습니다:

break [file:]function
    프레이크포인트를 (file 안의) function (으)로 설정합니다.

run [arglist]
    프로그램의 실행을 개시합니다(만약 있으면 arglist (을)를 인수로서).

bt  백 트레이스: 프로그램의 스택을 표시합니다.

print expr
    식의 값을 표시합니다.

c   프로그램의 실행을 재개합니다. (예를 들어 breakpoint로 실행을 중단한 다음에)

next
    다음의 프로그램행을 실행합니다. 그 은행내의 모든 함수는 1 스텝에서 실행됩니다.

step
    다음의 프로그램행을 실행합니다. 만약 그 행에 함수가 포함되어 있으면, 그 함수내를 스텝 실행해 갈 것입니다.

help [name]
    GDB 명령 name 에 대한 정보나, GDB 를 사용하는데 있어서의 일반적인 정보를 표시합니다.

quit
    GDB 를 종료합니다.

GDB 의 상세한 것에 대하여는 Using GDB: A Guide to the GNU Source-Level Debugger, by Richard M. Stallman and Roland H. Pesch. (을)를 참조해 주세요. 같은 텍스트는, info 프로그램내의 gdb 엔트리로부터 온라인으로 참조할 수 있습니다.

옵션
옵션 이외의 인수는, 실행 파일과 core 파일 (혹은 프로세스 ID) (을)를 나타냅니다. 즉 옵션 플래그에서도 옵션 플래그의 인수도 아닌 최초의 인수는 `-se '옵션으로 지정하는 파일과 같게 되어, (만약 있으면) 다음의 2 번째의 인수는 `-c '옵션으로 지정하는 파일과 같게 됩니다. 옵션의 상당수는, 긴 표기법과 짧은 표기법의 양쪽 모두로 지정일궖 가, 여기에서는 그 양쪽 모두를 나타냅니다. 긴 표기법은, 어느 옵션인지가 명확하면, 짧게 절약해도 상관하지 않습니다. (기호에 의해 `- '대신에 `+ '를 사용할 수 있습니다만, 여기에서는 잘 이용되는 표기로 기록합니다. ) 모든 옵션과 명령행 인수는 지정한 차례로 처리됩니다. `-x '옵션이 사용되면(자), 이 차례는 바뀌어 옵니다.

-help

-h  짧은 설명 돌출해 모든 옵션을 표시합니다.

-symbols=file

-s file
    심볼 테이블을 파일 file (으)로부터 읽습니다.

-exec=file

-e file
    파일 file (을)를 실행 가능 파일로서 이용합니다. core dump 와 연계해 pure data 를 조사하는데도 이용됩니다.

-se=file
    파일 file (으)로부터 심볼 테이블을 읽어, 동시에 그것을 실행 가능 파일로서 이용합니다.

-core=file

-c file
    파일 file (을)를 core dump 로서 이용합니다.

-command=file

-x file
    파일 file (으)로부터 GDB 의 명령을 읽어들여, 실행합니다.

-directory=directory

-d directory
    원시 파일을 찾는 서치 패스에 directory (을)를 추가합니다.

-nx

-n  초기화 파일 `.gdbinit '로부터 명령을 읽어들이지 않습니다. 통상은, 모든 명령 옵션과 인수가 처리된 다음에, 초기화 파일내의 명령이 실행됩니다.

-quiet

-q  기동시의 메세지 및 copyright 를 표시하지 않습니다. 이러한 메세지는 배치 모드에서도 억제됩니다.

-batch
    배치 모드로 동작합니다. `-x '로 지정한 파일( 및, -nx 나 -n 로 억제되어 있지 않으면 `.gdbinit ') 안의 모든 명령을 처리한 후, 반환값으로서 0 (을)를 돌려주어 종료합니다. 명령 파일내의 GDB 커멘드의 실행중에 에러가 생겼을 경우는, 0 이외의 값으로 종료합니다. 배치 모드는 GDB 를 필터로서 실행하는 경우, 예를 들어 프로그램을 다운로드해 다른 컴퓨터상에서 실행하거나 하는 경우 에 편리합니다. 이하의 메세지

    Program exited normally. (프로그램은 정상적으로 종료했습니다. )

    (은)는 통상, GDB 의 제어 단말상에서 실행되는 프로그램이 종료할 때마다 출력되는 것입니다만, 배치 모드에서는 이러한 메세지는 출력되지 않습니다.

-cd=directory
    커런트 디렉토리 대신에 directory (을)를 GDB 의 작업용 디렉토리로서 실행합니다.

-fullname

-f  Emacs 가 GDB 를 서브 프로세스로서 실행할 때에 이 옵션을 부가합니다. 이 때 GDB 는, 스택 프레임이 표시될 때(프로그램이 중단할 때를 포함합니다)에, 완전한 파일명과 행 번호를 표준적인 인식하기 쉬운 형식에서 표시합니다. 이 표시 서식은 2 개의 `32 ' 캐릭터, 파일명, 코론으로 단락지어진 행 번호와 캐릭터 위치, 개행의 순서에 (이)라고 있습니다. 이것은 Emacs→GDB 인터페이스 프로그램에 대해, 프레임에 대응하는 원시 코드를 표시하기 위해서 2 개(살)의 `32 '캐릭터를 사용하게 되어 있기 때문입니다.

-kernel

-k  gdb 를 커널 디버그 모드로 사용합니다. prompt는 ``(kgdb)''가 됩니다.

-wcore
    이 옵션은 커널 디버그 모드로 「동작중의」커널을 디버그 하고 있을 때 마셔 사용 가능하고, 코어 파일 (/dev/mem)을 기입해 가능하게 합니다.

-b bps
    리모트 디버그용으로 GDB 가 이용하는 시리얼 인터페이스의 전송 속도를 (baud rate 또는 비트/초에) 세트 합니다.

-tty=device
    프로그램의 표준 입출력에 device (을)를 이용합니다.

관련 항목
info 안의 `gdb' 엔트리 ; Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch, July 1991.

COPYING
Copyright (c) 1991 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.