|
GNU Tools gdb(1)
이름 gdb - GNU 디버거
개요 gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir] [prog[core|procID]]
설명 GDB같은 디버거의 목적은 다른 프로그램 수행중에 그 프로그램 ``내부에서'' 무슨 일이 일어나고 있는지 보여주거나 프로그램이 고장났을 때 무슨 일이 일어나고 있는지 보여주는 것이다.
버그를 잡는 걸 돕기위해 GDB는 네가지 종류의 일(더 많은 일을 할 수 있다)을 할 수 있다:
? 프로그램의 행동에 영향을 줄 수 있는 각종 조건을 설정한 후, 프로그램을 시작한다.
? 특정 조건을 만나면 프로그램을 정지시킨다.
? 프로그램이 정지됐을 때 무슨 일이 일어났는지 검사한다.
? 프로그램 내부 설정을 바꾸어서 버그를 수정함으로써 다른 버그를 계속 찾아나간다.
GDB로 C, C++, Modula-2로 짠 프로그램을 디버그할 수 있다. GNU 포트란이 완성되면 포트란도 지원할 것이다.
쉘 명령어 gdb로 GDB를 기동한다. 일단 시작되면, GDB 명령 quit으로 종료명령을 주기전까지는 터미날로부터 명령을 읽어들인다. help 명령을 사용하여 gdb 내부에서 온라인 도움말을 볼 수 있다.
인자나 옵션 없이 gdb를 기동할 수 있다; 하지만 가장 일반적인 GDB 기동방법은 하나 또는 두개의 실행가능 프로그램명을 인자로 주는 것이다:
gdb program
실행가능 프로그램명과 core 파일을 동시에 인자로 주어 기동할 수도 있다:
gdb program core
GNU Tools 4nov1991 1
gdb(1) GNU Tools gdb(1)
실행중인 프로세스를 디버그할려면 대신 프로세스 ID를 두번째 인자로 주면된다:
gdb program 1234
명령은 GDB를 (`1234'란 이름의 파일이 없다면) 프로세스 1234에 접속시킨다(GDB는 core 파일을 먼저 찾는다).
다음은 가장 많이 사용되는 GDB 명령들이다:
break [file:]function (file안의) function에 정지점을 설정한다.
run [arglist] (지정되었다면, arglist를 가지고) 프로그램을 시작한다.
bt 역추적(backtrace):프로그램 스택을 보여준다.
print expr 수식의 값을 보여준다.
c (정지점등에서 정지한) 프로그램을 계속 수행한다.
next (정지한 후) 다음 행을 수행한다; 그 행에서 호출되는 함수를 수행하지않고 건너뛴다.
step (정지한 후) 다음 행을 수행한다; 그 행에서 호출되는 함수를 수행한다.
help [name] GDB 명령어 name에 대한 정보를 보여거나 GDB 사용에 관한 일반적인 정보를 보여준다.
quit GDB에서 빠져나간다.
GDB에 대한 상세한 정보를 알고싶으면 Richard M. Stallman과 Roland H. Pesch가 쓴 Using GDB: A Guide to the GNU Source-Level Debugger를 보라. 동일한 내용이 info의 gdb 항목에 나온다.
옵션 옵션 이외의 모든 인자는 실행가능 파일과 core 파일(또는 프로세스 ID)로 인식된다; 즉 옵션 플래그 없는 첫번째 인자는 `-se' 옵션과 같고, 두번째 인자는, 존재한다면, `-c' 옵션과 같다(인자가 파일이름인 경우). 많은 옵션에 짧은 형식과 긴 형식이 있는데; 둘다 아래에 설명된다. 긴 옵션은 일부만 써도 애매하지 않으면 인식된다. (당신이 그렇게 하고싶다면, `-'대신 `+'로 옵션을 나타낼 수도 있다. 우린 일반적 관례인 -를 쓰겠다)
GNU Tools 4nov1991 2
gdb(1) GNU Tools gdb(1)
모든 옵션과 명령행 인자들은 순차적으로 처리된다. `-x'옵션을 사용할 경우 순서가 다르면 결과도 다르다.
-help
-h 모든 옵션을 짧은 설명과 함께 보여준다.
-symbols=file
-s file file로부터 심볼 테이블을 읽어들인다.
-exec=file
-e file 적당하다면 실행파일로 file을 사용하여 core dump의 내용을 검사한다.
-se=file file로부터 심볼 테이블을 읽어들이고 또한 실행파일로 사용한다.
-core=file
-c file file을 검사할 core dump로 사용한다.
-command=file
-x file file안의 GDB 명령을 수행한다.
-directory=directory
-d directory 소스 파일 검색 경로에 directory를 추가한다.
-nx
-n 초기화 파일 `.gdbinit'의 명령을 수행하지않는다. 보통 모든 옵션과 인자가 처리된 후 초기화 파일의 명령이 실행된다.
GNU Tools 4nov1991 3
gdb(1) GNU Tools gdb(1)
-quiet
-q ``조용히해''. 도입 메시지와 저작권 메시지를 출력하지않는다. 배치 모드에서도 이들 메시지는 출력되지않는다.
-batch 배치 모드로 수행한다. `-x' 옵션으로 지정한 파일(그리고 금지되지않았다면, `.gdbinit' 파일)의 명령들을 수행한 후 종료상태 0으로 종료한다. 파일의 GDB 명령을 수행하던 중 오류가 발생하면 0이 아닌 종료상태로 종료한다.
프로그램을 내려받아서 다른 컴퓨터에서 실행하는 경우등에, GDB를 필터로 사용할 수 있는데 이때 배치 모드가 유용하다; 이 모드가 더 쓸모있도록, GDB하에서 수행되던 프로그램이 종료되면 나오는
Program exited normally.
이란 메시지가 배치 모드에서는 나오지 않는다.
-cd=directory 현재 디렉토리 대신 directory를 작업 디렉토리로 하여 GDB를 수행한다.
-fullname
-f 이맥스의 서브프로세스로 GDB가 수행될 때 이 옵션이 켜진다. 이 옵션이 켜지면 GDB는 전체 파일이름과 행번호를, 스택 프레임을 디스플레이할 때마다(프로그램이 정지되는 경우도 여기에 해당된다) 표준적이고 알아볼 수 있는 양식으로 출력한다. 이 양식은 ` 32'뒤에 파일이름, 콜론으로 구분된 행번호와 문자위치, 개행문자가 오는 것이다. 이맥스-GDB 접속프로그램은 ` 32'를 프레임의 소스코드를 디스플레이하란 신호로 사용한다.
-b bps 원격 디버깅에 사용되는 직렬 인터페이스의 회선속도(보오율이나 초당 비트수)를 설정한다.
GNU Tools 4nov1991 4
gdb(1) GNU Tools gdb(1)
-tty=device device를 표준입력과 표준출력으로 하여 프로그램을 실행한다.
관련 항목 info의 `gdb' 항목; Using GDB: A Guide to the GNU Source- Level Debugger, 저자: Richard M. Stallman, Roland H. Pesch, July 1991.
저작권 Copyright (c) 1991 Free Software Foundation, Inc.
저작권 표시와 이 허락문이 모든 사본에 실린다는 조건하에, 이 매뉴얼을 변경없이 복사하고 배포하는 것을 허락한다.
그로부터 나온 모든 산출물이 본 허락문과 동일한 조건하에 배포된다면, 본 매뉴얼을 수정하여 복사배포하는 것을 허락한다.
영어가 아니라 Free Software Foundation이 공인한 번역문으로 본 허락문이 포함될 수 있다는 점을 제외하고 위와 같은 조건하에, 본 매뉴얼을 다른 언어로 번역하여 복사배포하는 것을 허락한다. GNU Tools gdb(1)
이름 gdb - GNU 디버거
개요 gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir] [prog[core|procID]]
설명 GDB같은 디버거의 목적은 다른 프로그램 수행중에 그 프로그램 ``내부에서'' 무슨 일이 일어나고 있는지 보여주거나 프로그램이 고장났을 때 무슨 일이 일어나고 있는지 보여주는 것이다.
버그를 잡는 걸 돕기위해 GDB는 네가지 종류의 일(더 많은 일을 할 수 있다)을 할 수 있다:
? 프로그램의 행동에 영향을 줄 수 있는 각종 조건을 설정한 후, 프로그램을 시작한다.
? 특정 조건을 만나면 프로그램을 정지시킨다.
? 프로그램이 정지됐을 때 무슨 일이 일어났는지 검사한다.
? 프로그램 내부 설정을 바꾸어서 버그를 수정함으로써 다른 버그를 계속 찾아나간다.
GDB로 C, C++, Modula-2로 짠 프로그램을 디버그할 수 있다. GNU 포트란이 완성되면 포트란도 지원할 것이다.
쉘 명령어 gdb로 GDB를 기동한다. 일단 시작되면, GDB 명령 quit으로 종료명령을 주기전까지는 터미날로부터 명령을 읽어들인다. help 명령을 사용하여 gdb 내부에서 온라인 도움말을 볼 수 있다.
인자나 옵션 없이 gdb를 기동할 수 있다; 하지만 가장 일반적인 GDB 기동방법은 하나 또는 두개의 실행가능 프로그램명을 인자로 주는 것이다:
gdb program
실행가능 프로그램명과 core 파일을 동시에 인자로 주어 기동할 수도 있다:
gdb program core
GNU Tools 4nov1991 1
gdb(1) GNU Tools gdb(1)
실행중인 프로세스를 디버그할려면 대신 프로세스 ID를 두번째 인자로 주면된다:
gdb program 1234
명령은 GDB를 (`1234'란 이름의 파일이 없다면) 프로세스 1234에 접속시킨다(GDB는 core 파일을 먼저 찾는다).
다음은 가장 많이 사용되는 GDB 명령들이다:
break [file:]function (file안의) function에 정지점을 설정한다.
run [arglist] (지정되었다면, arglist를 가지고) 프로그램을 시작한다.
bt 역추적(backtrace):프로그램 스택을 보여준다.
print expr 수식의 값을 보여준다.
c (정지점등에서 정지한) 프로그램을 계속 수행한다.
next (정지한 후) 다음 행을 수행한다; 그 행에서 호출되는 함수를 수행하지않고 건너뛴다.
step (정지한 후) 다음 행을 수행한다; 그 행에서 호출되는 함수를 수행한다.
help [name] GDB 명령어 name에 대한 정보를 보여거나 GDB 사용에 관한 일반적인 정보를 보여준다.
quit GDB에서 빠져나간다.
GDB에 대한 상세한 정보를 알고싶으면 Richard M. Stallman과 Roland H. Pesch가 쓴 Using GDB: A Guide to the GNU Source-Level Debugger를 보라. 동일한 내용이 info의 gdb 항목에 나온다.
옵션 옵션 이외의 모든 인자는 실행가능 파일과 core 파일(또는 프로세스 ID)로 인식된다; 즉 옵션 플래그 없는 첫번째 인자는 `-se' 옵션과 같고, 두번째 인자는, 존재한다면, `-c' 옵션과 같다(인자가 파일이름인 경우). 많은 옵션에 짧은 형식과 긴 형식이 있는데; 둘다 아래에 설명된다. 긴 옵션은 일부만 써도 애매하지 않으면 인식된다. (당신이 그렇게 하고싶다면, `-'대신 `+'로 옵션을 나타낼 수도 있다. 우린 일반적 관례인 -를 쓰겠다)
GNU Tools 4nov1991 2
gdb(1) GNU Tools gdb(1)
모든 옵션과 명령행 인자들은 순차적으로 처리된다. `-x'옵션을 사용할 경우 순서가 다르면 결과도 다르다.
-help
-h 모든 옵션을 짧은 설명과 함께 보여준다.
-symbols=file
-s file file로부터 심볼 테이블을 읽어들인다.
-exec=file
-e file 적당하다면 실행파일로 file을 사용하여 core dump의 내용을 검사한다.
-se=file file로부터 심볼 테이블을 읽어들이고 또한 실행파일로 사용한다.
-core=file
-c file file을 검사할 core dump로 사용한다.
-command=file
-x file file안의 GDB 명령을 수행한다.
-directory=directory
-d directory 소스 파일 검색 경로에 directory를 추가한다.
-nx
-n 초기화 파일 `.gdbinit'의 명령을 수행하지않는다. 보통 모든 옵션과 인자가 처리된 후 초기화 파일의 명령이 실행된다.
GNU Tools 4nov1991 3
gdb(1) GNU Tools gdb(1)
-quiet
-q ``조용히해''. 도입 메시지와 저작권 메시지를 출력하지않는다. 배치 모드에서도 이들 메시지는 출력되지않는다.
-batch 배치 모드로 수행한다. `-x' 옵션으로 지정한 파일(그리고 금지되지않았다면, `.gdbinit' 파일)의 명령들을 수행한 후 종료상태 0으로 종료한다. 파일의 GDB 명령을 수행하던 중 오류가 발생하면 0이 아닌 종료상태로 종료한다.
프로그램을 내려받아서 다른 컴퓨터에서 실행하는 경우등에, GDB를 필터로 사용할 수 있는데 이때 배치 모드가 유용하다; 이 모드가 더 쓸모있도록, GDB하에서 수행되던 프로그램이 종료되면 나오는
Program exited normally.
이란 메시지가 배치 모드에서는 나오지 않는다.
-cd=directory 현재 디렉토리 대신 directory를 작업 디렉토리로 하여 GDB를 수행한다.
-fullname
-f 이맥스의 서브프로세스로 GDB가 수행될 때 이 옵션이 켜진다. 이 옵션이 켜지면 GDB는 전체 파일이름과 행번호를, 스택 프레임을 디스플레이할 때마다(프로그램이 정지되는 경우도 여기에 해당된다) 표준적이고 알아볼 수 있는 양식으로 출력한다. 이 양식은 ` 32'뒤에 파일이름, 콜론으로 구분된 행번호와 문자위치, 개행문자가 오는 것이다. 이맥스-GDB 접속프로그램은 ` 32'를 프레임의 소스코드를 디스플레이하란 신호로 사용한다.
-b bps 원격 디버깅에 사용되는 직렬 인터페이스의 회선속도(보오율이나 초당 비트수)를 설정한다.
GNU Tools 4nov1991 4
gdb(1) GNU Tools gdb(1)
-tty=device device를 표준입력과 표준출력으로 하여 프로그램을 실행한다.
관련 항목 info의 `gdb' 항목; Using GDB: A Guide to the GNU Source- Level Debugger, 저자: Richard M. Stallman, Roland H. Pesch, July 1991.
저작권 Copyright (c) 1991 Free Software Foundation, Inc.
저작권 표시와 이 허락문이 모든 사본에 실린다는 조건하에, 이 매뉴얼을 변경없이 복사하고 배포하는 것을 허락한다.
그로부터 나온 모든 산출물이 본 허락문과 동일한 조건하에 배포된다면, 본 매뉴얼을 수정하여 복사배포하는 것을 허락한다.
영어가 아니라 Free Software Foundation이 공인한 번역문으로 본 허락문이 포함될 수 있다는 점을 제외하고 위와 같은 조건하에, 본 매뉴얼을 다른 언어로 번역하여 복사배포하는 것을 허락한다.

사용법
|
help |
도움말, 명령어 분류 목록 출력 |
|
help [class] |
해당 class에 속한 명령어 목록 표시 |
|
help [command] |
해당 command에 대한 도움말 표시 |
명령어 분류 목록
|
running |
프로그램 수행 |
support |
지원 도구 |
|
stack |
스택 검사 |
user-defined |
사용자 정의 명령 |
|
data |
데이타 검사 |
aliases |
다른 명령어의 별칭 |
|
files |
검사할 파일 |
obscure |
기타 |
|
status |
상태 조회 |
internals |
유지보수 명령 |
|
breakpoints |
어떤 포인트에서 프로그램을 중단하게 만듦 |
프로그램의 수행 (running)
|
show args |
디버깅할 프로그램에 전달되는 argument를 보여준다. 이 명령어 다음에 몇 개의 argument가 온다. |
|
info handle |
프로그램이 각종 신호를 입력으로 받았을 때, 디버거의 동작법을 보여준다. |
|
kill |
디버깅 중인 프로그램의 실행을 취소한다. |
|
target |
타겟 기계나 프로세스에 연결한다. 첫번째 argument는 타겟 기계의 타입이나 프로토콜이다. 나머지 argument는 타겟 프로토콜에 의해서 해석 되어진다. 특정 프로토콜에 작동하는 argument에 관해 추가 정보가 필요하면, [help target 프로토콜명]을 친다.
[target 서브 명령어 목록]
|
target exec |
타겟으로서 실행 파일을 사용한다. |
|
target extended-remote |
시리얼 라인을 경유해 떨어져 있는 컴퓨터를 타겟으로 사용 |
|
target remote |
시리얼 라인을 경유해 떨어져 있는 컴퓨터를 타겟으로 사용 |
|
target core |
타겟으로서 코어 파일을 사용한다. |
|
target child |
([run] 명령어에 의해 시작된) 유닉스의 자식 프로세스를 타겟으로 사용한다. |
|
|
handle |
신호를 어떻게 다룰지 상술함 argument는 신호와 그 신호에 적용할 동작이다. 심벌 신호(즉 SIGSEGV)가 권장 사항이지만, 1-15의 숫자 신호도 GDB의 이전 버젼과의 호환성을 위해 허용된다. 숫자 범위는 LOW-HIGH(즉 1-5)의 형태로 지정되어질 수 있다. 특별한 argument "all"은 대체로 SIGTRAP과 SIGINT처럼 디버거에 의해 사용되어지는 것을 제외한 모든 신호를 의미한다고 인식되어진다. 동작에는 "stop", "nostop", "print", "noprint", "pass", "nopass", "ignore", "noignore"가 있다.
"stop"은 디버거로 다시 들어감을 의미한다("print"를 포함한다). "print"는 메세지를 프린트함을 의미한다. "pass"는 프로그램이 이 신호를 인식할 수 있도록 함을 의미한다; 그렇지않으면 프로그램은 알 수 없다. "ignore"는 "nopass"와 같은 말이며, "noignore"도 "pass"와 같은 말이다. "pass"와 "stop"은 결합해서 사용할 수 있다. |
|
run |
디버깅할 프로그램의 수행을 시작한다. 전달할 argument를 지정할 수 있다. argument는 "*"나 "[..]"를 포함할 수도 있다; 쉘의 사용까지도 확장 될 수 있다. ">", "<", ">>" 같은 입출력 방향 재지정 기호도 또한 허용된다. argument 없이, 마지막으로 지정된 argument를 사용할 수 있다("run" 또는 "set args"에 의해) 이전의 argument를 취소하고 argument 없이 실행하기 위해서, "set args" 를 argument 없이 사용하라. |
|
continue |
신호나 breakpoint 후에, 디버깅할 프로그램의 수행을 계속한다. 만약 breakpoint에서부터 진행된다면, 숫자 N이 argument로 사용되어질 수 있으며, 이는 breakpoint의 무시할 갯수가 N-1로 정해진다는 것을 의미한다. (그래서 breakpoint 가 N번째에 이를 때까지 분기하지 않는다) |
|
jump |
지정된 라인이나 주소에서 디버깅할 프로그램의 수행을 계속한다. LINENUM이나 *ADDR을 argument로 준다. |
|
until |
프로그램이 현재 라인보다 큰 라인이나 또는 지정된 라인이나 어드레스 또는 함수에 도달할 때까지 수행한다(break 명령과 동일한 argument). 실행은 현재의 스택 프레임으로 부터 빠져나오면서 중지될 것이다. |
|
step |
다른 소스 라인에 도달할 때까지 프로그램의 수행을 건너뛴다. argument N은 이를 N번 수행하라는 의미다(또는 다른 이유로 인해 프로그램이 중지될 때까지). |
|
next |
서브루틴을 호출하여 진행하면서 프로그램의 수행을 건너뛴다. 서브루틴 호출이 발생하지 않는한 "step" 명령어와 같다. 이 명령어가 수행될 때, 호출은 하나의 명령으로 다루어진다. argument N은 이를 N번 수행하라는 의미다(또는 다른 이유로 인해 프로그램이 중지될 때까지). |
|
finish |
선택된 스택 프레임이 리턴될 때까지 수행한다. 리턴되면서, 리턴되는 값은 출력되어지고 값 히스토리에 입력된다. |
|
nexti |
명령 하나를 건너뛰지만, 서브루틴 호출은 진행한다. argument N은 이를 N번 수행하라는 의미다(또는 다른 이유로 인해 프로그램이 중지될 때까지). |
|
stepi |
정확하게 명령 하나를 건너 뛴다. argument N은 이를 N번 수행하라는 의미다(또는 다른 이유로 인해 프로그램이 중지될 때까지). |
|
signal |
argument에 의해 지정된 신호를 주면서 프로그램의 수행을 계속한다. argument "0"은 신호를 주지 않으면서 프로그램을 계속 수행하라는 의미다. |
|
detach |
이전에 첨부된 프로세스나 파일을 제거하라. 만약 프로세스이면, 더 이상 추적할 필요 없이 수행을 계속한다. 만약 파일을 디버깅 중이라면, 그 파일은 닫히고 gdb는 더 이상 억세스 하지 않는다. |
|
attach |
GDB 바깥의 프로세스나 파일을 첨부한다. 이 명령어는 'target' 명령어처럼 다른 타겟에 부가되어진다('info files'는 당신의 타겟 스택을 보여줄 것이다). 이 명령어는 프로세스 id나 디바이스 파일을 argument로 가질 수 있다. 프로세스 id에 대해, 당신은 프로세스로 신호를 보낼 수 있는 권한을 가지고 있어야만 하며, 디버거와 똑같은 영향을 가지는 uid를 가지고 있어야 한다. "attach" 명령을 사용할 때, 프로세스에서 프로그램 동작을 상술하며 심벌 테이블을 로딩하는 명령 "file"을 사용해야 한다. |
|
unset environment |
프로그램에 대한 환경변수 VAR을 취소한다. 이 명령은 이후에 "run" 명령을 수행했을 때, 프로그램에 영향을 미친다. |
|
tty |
디버깅할 프로그램의 앞으로의 수행을 위해 터미널을 셋팅한다. |
|
set environment |
프로그램에 전달할 환경변수 값을 셋팅한다. argument는 VAR VALUE인데, 여기에서 VAR은 변수명이고 VALUE는 값이다. 환경변수의 VALUE는 해석되지 않은 스트링이다. 이 명령은 이후에 "run" 명령을 수행했을 때, 프로그램에 영향을 미친다. |
|
set args |
프로그램이 시작될 때, 디버깅할 프로그램에 전달할 argument를 셋팅한다. 이 명령어 다음에 프로그램에 전달될 몇 개의 argument가 따라온다. |
|
thread |
thread간 스위칭을 위해 이 명령을 사용한다. 새로운 thread ID를 반드시 알고 있어야 한다.
|
thread |
서브명령어의 목록 |
|
thread apply |
thread 목록에 명령을 적용한다. |
|
thread apply all |
모든 thread에 명령어를 적용한다. |
|
스택을 검사 (stack)
스택은 스택 프레임으로 구성되어진다. gdb는 스택 프레임에 번호를 지정한다. gdb는 가장 안쪽에 있는(현재 실행중인) 프레임에 대해 0번 부터 번호를 부여한다. 항상 gdb는 한 프레임을 선택된 프레임으로 간주한다. 변수 룩업은 선택된 프레임에 대하여 이루어진다. 디버깅 중인 프로그램이 정지될 때, gdb는 가장 안쪽에 있는 프레임을 선택한다. 아래 명령어들은 숫자나 어드레스에 의해서 선택된 다른 프레임에 대해서도 사용되어질 수도 있다.
명령어 목록
|
bt |
모든 스택 프레임이나 가장 안쪽에 있는 COUNT 프레임의 backtrace를 출력한다. argument가 음수일 때, 가장 바깥쪽의 -COUNT 프레임을 출력한다. |
|
backtrace |
bt 명령어와 동일하다. |
|
select-frame |
아무런 출력 없이 스택 프레임을 선택한다. argument는 선택할 프레임을 상술한다. 그것은 스택 프레임 번호이거나 프레임 어드레스일 수도 있다. |
|
frame |
스택 프레임을 선택하고 출력한다. argument 없이 사용하면, 선택된 스택 프레임을 출력한다("info frame" 참조) argument 는 선택할 프레임을 상술한다. 그것은 스택 프레임 번호이거나 프레임 어드레스일 수도 있다. argument와 같이 사용할 경우에, 입력이 명령 파일이나 사용자 정의 명령에 근거한다면 출력되는 것은 아무 것도 없다. |
|
down |
이 명령에 의해 호출된 스택 프레임을 선택하고 출력한다. argument는 얼마나 많은 프레임을 down 해야할지를 말해준다. |
|
up |
이 명령에 의해 호출된 스택 프레임을 선택하고 출력한다. argument는 얼마나 많은 프레임을 up 해야할지를 말해준다. |
|
return |
선택된 스택 프레임으로 하여금 호출자에게 리턴값을 돌려주도록 한다. 디버거에 제어가 남아 있지만 당신이 계속할 때, 실행은 현재 선택된 것보다 위에 있는 프레임에서 계속될 것이다. 만약 argument가 주어진다면, 리턴값에 대한 표현이다. |
데이타를 검사 (data)
명령어 목록
|
whatis |
expression EXP의 데이터 타입을 출력한다. |
|
ptype |
타입 TYPE의 정의를 출력한다. argument는 typedef, "struct STRUCT-TAG", "class CLASS-NAME", "union UNION-TAG", "enum ENUM-TAG"에 의해 정의된 타입명이다. 선택된 스택 프레임의 어휘적인 문맥은 그 명칭을 찾는데 사용되어진다. |
|
inspect |
당신이 epoch 환경에서 실행중이라면 그 값이 자신의 창에 출력된다는 것을 제외하면 "print" 명령과 동일하다. |
|
print |
expression EXP의 값을 출력한다. |
|
call |
프로그램 내에 있는 함수를 호출한다. argument는 현재 작업중인 언어의 표기에서 함수명과 argument이다. void가 아니라면, 결과는 value history에 기록 되어지고 출력될 것이다. |
|
set |
변수 VAR 대해 표현 EXP와 지정된 결과를 계산한다. |
|
output |
"print"와 유사하지만, value history에 입력하지 않고 개행문자도 출력하지 않는다. |
|
undisplay |
프로그램이 정지할 때마다 출력되는 몇몇 표현을 취소한다. |
|
disassemble |
메모리의 특정 부분을 해체한다. x 메모리를 검사한다. : x/FMT ADDRESS |
|
delete display |
display 기능을 삭제한다. |
|
disable display |
display 기능을 disable시킨다. |
|
enable display |
display 기능을 enable시킨다. |
특정 지점에서 프로그램을 정지시키기
명령어 목록
|
awatch |
한 표현에 대해 watchpoint를 셋팅한다. |
|
rwatch |
한 표현에 대해 read watchpoint를 셋팅한다. |
|
watch |
한 표현에 대해 watchpoint를 셋팅한다. |
|
catch |
발생되는 예외를 잡아내기 위해 breakpoint를 셋팅한다. |
|
break |
특정 라인이나 함수에 breakpoint를 셋팅한다. |
|
clear |
특정 라인이나 함수에 있던 breakpoint를 삭제한다. |
|
delete |
몇몇 breakpoint나 자동으로 출력되는 표현을 삭제한다. |
|
disable |
몇몇 breakpoint를 disable시킨다. |
|
enable |
몇몇 breakpoint를 enable시킨다. |
|
thbreak |
breakpoint를 지원하는 일시적인 하드웨어를 셋팅한다. |
|
hbreak |
breakpoint를 지원하는 하드웨어를 셋팅한다. |
|
tbreak |
일시적인 breakpoint를 셋팅한다. |
|
condition |
breakpoint 번호 N을 오직 COND가 참일 경우에만 분기하도록 지정한다. |
|
commands |
breakpoint를 만났을 때, 실행될 명령어를 셋팅한다. |
|
ignore |
breakpoint 번호 N을 무시하는 번호로 셋팅한다. |
파일의 상술 및 검사
명령어 목록
|
show gnutarget |
현재의 BFD 타겟을 셋팅한다. |
|
cd |
디버깅 중인 프로그램과 디버거를 위한 작업 디렉토리를 DIR로 셋팅한다. |
|
pwd |
작업 디렉토리를 출력한다. |
|
core-file |
메모리와 레지스터의 검사를 위한 core dump로서 FILE을 사용한다. |
|
section |
실행 파일의 섹션 SECTION의 기본 어드레스를 ADDR로 변경한다. |
|
exec-file |
순수한 메모리의 내용을 얻기 위한 프로그램으로서 FILE을 사용한다. |
|
file |
디버깅할 프로그램으로서 FILE을 사용한다. |
|
path |
디렉토리 DIR을 목적 파일에 대한 검색 시작점으로 추가한다. |
|
load |
실행중인 프로그램 속으로 FILE을 역동적으로 로딩한다. |
|
add-shared-symbol-files |
dynamic linker의 link map에 있는 shared object로 부터 심벌을 로딩한다. add-symbol-file 사용법 : add-symbol-file FILE ADDR |
|
symbol-file |
실행파일인 FILE로부터 심벌 테이블을 로딩한다. |
|
set gnutarget |
현재의 BFD 타겟을 셋팅한다. |
|
list |
지정된 함수나 행을 출력한다. |
|
reverse-search |
출력된 마지막 행에서부터 정규 표현식에 대해 역방향으로 검색한다. |
|
search |
출력된 마지막 행에서부터 정규 표현식에 대해 검색한다. (regex(3) 참조) |
|
directory |
원본 파일에 대한 검색 경로의 시작에 디렉토리 DIR을 추가한다. |
상태 조회
명령어 목록
|
show |
디버거에 관한 것을 보여주는 포괄적인 명령어 |
|
info |
디버깅 중인 프로그램에 관한 것을 보여주는 포괄적인 명령어 |
지원 도구
명령어 목록
|
if |
IF 조건이 0이 아닐 경우, 지정된 명령어들을 실행한다.
|
|
while |
WHILE 조건이 0이 아닐 경우, 지정된 명령어들을 실행한다.
|
|
show confirm |
위험한 작동을 확인할지를 보여준다.
|
|
show history |
명령어 history 파라메터를 보여주기 위한 포괄적인 명령어이다.
|
|
show editing |
명령어 라인의 편집을 보여준다.
|
|
show verbose |
장황한 설명을 보여준다.
|
|
show prompt |
gdb의 프롬프트를 보여준다.
|
|
show complaints |
잘못된 기호에 관해 경고 메세지의 최대 수를 보여준다.
|
|
show demangle-style |
현재의 C++ 스타일을 보여준다. |
|
show write |
실행 파일과 코어 파일에 쓰여지는 것을 보여준다.
|
|
show check range |
검사할 범위를 보여준다.
|
|
show check type |
검사할 타입을 보여준다.
|
|
show language |
현재의 원본 언어를 보여준다.
|
|
show remotecache |
remote 타겟을 위한 cache 사용을 보여준다. |
|
show auto-solib-add |
shared library symbol의 autoloading을 보여준다.
|
|
show stop-on-solib-events |
shared library event에 대한 중지를 보여준다.
|
|
show symbol-reloading |
1회 실행에 여러번 재로딩하는 다이나믹 심벌 테이블을 보여준다.
|
|
show radix |
입출력 번호 radix의 디폴트 값을 보여준다.
|
|
show output-radix |
값의 출력을 위한 출력 radix의 디폴트 값을 보여준다. |
|
show input-radix |
입력 숫자에 대한 입력 radix의 디폴트 값을 보여준다.
|
|
show print object |
vtable 정보에 기초한 오브젝트의 파생된 타입의 출력을 보여준다.
|
|
show print vtbl |
C++의 가상 함수 테이블의 출력을 보여준다. Show printing of C++ virtual function tables. |
|
show print static-members |
C++의 static member의 출력을 보여준다.
|
|
show print address |
어드레스의 출력을 보여준다. |
|
show print array |
배열의 prettyprinting을 보여준다.
|
|
show print union |
유니온 내부의 출력을 보여준다.
|
|
show print pretty |
구조체의 prettyprinting을 보여준다.
|
|
show print asm-demangle |
분해 목록에서 C++ 이름의 결합을 보여준다.
|
|
show print sevenbit-strings |
스트링에서 \nnn과 같은 8비트 문자의 출력을 보여준다.
|
|
show print demangle |
심벌을 출력할 때, 인코딩된 C++ 이름의 결합을 보여준다. |
|
show listsize |
gdb가 디폴트로 출력할 소스 라인의 숫자를 보여준다.
|
|
show height |
gdb가 한 페이지에 넣을 수 있는 행수를 보여준다.
|
|
show width |
gdb가 한 라인에 넣을 수 있는 글자수를 보여준다.
|
|
dont-repeat |
이 명령을 반복하지 말라.
|
|
help |
명령어의 목록을 출력한다. |
|
quit |
gdb를 빠져 나간다.
|
|
source |
파일명 FILE로부터 명령어들을 읽어 들인다.
|
|
define |
새로운 명령어 이름을 정의한다.
|
|
document |
사용자 정의 명령에 해설을 단다.
|
|
echo |
상수 스트링을 출력한다. |
|
make |
argument로서 그 행의 나머지를 사용하는 'make' 프로그램을 실행한다.
|
|
shell |
쉘 명령으로서 그 행의 나머지를 실행한다.
|
|
set confirm |
위험스런 작동을 확인할지 셋팅한다.
|
|
set history |
명령어 history 파라메터 셋팅에 대한 포괄적인 명령어
|
|
set editing |
명령어 라인의 편집을 셋팅한다 |
|
set verbose |
장황한 설명 여부를 셋팅한다.
|
|
set prompt |
gdb의 프롬프트를 셋팅한다.
|
|
set complaints |
잘못된 심벌에 관한 경고 메세지의 최대 갯수를 셋팅한다.
|
|
set demangle-style |
현재의 C++ 스타일을 셋팅한다.
|
|
set write |
실행 파일과 코어 파일에 쓰여지는 것을 셋팅한다. |
|
set check range |
검사할 범위를 셋팅한다. |
|
set check type |
검사할 타입을 셋팅한다. |
|
set language |
현재의 원본 언어를 셋팅한다.
|
|
set remotecache |
remote 타겟을 위한 cache 사용을 셋팅한다.
|
|
set auto-solib-add |
shared library symbol의 autoloading을 셋팅한다. |
|
set stop-on-solib-events |
shared library event에 대한 중지를 셋팅한다.
|
|
set symbol-reloading |
1회 실행에 여러번 재로딩하는 다이나믹 심벌 테이블을 셋팅한다.
|
|
set radix |
입출력 번호 radix의 디폴트 값을 셋팅한다.
|
|
set output-radix |
값의 출력을 위한 출력 radix의 디폴트 값을 셋팅한다.
|
|
set input-radix |
입력 숫자에 대한 입력 radix의 디폴트 값을 셋팅한다. |
|
set print object |
vtable 정보에 기초한 오브젝트의 파생된 타입의 출력을 셋팅한다.
|
|
set print vtbl |
C++ 가상 함수 테이블의 출력을 셋팅한다.
|
|
set print static-members |
C++ static member의 출력을 셋팅한다.
|
|
set print address |
어드레스의 출력을 셋팅한다.
|
|
set print array |
배열의 prettyprinting을 셋팅한다.
|
|
set print union |
유니온 내부의 출력을 셋팅한다.
|
|
set print pretty |
구조체의 prettyprinting을 셋팅한다. |
|
set print asm-demangle |
분해 목록에서 C++ 이름의 결합을 셋팅한다.
|
|
set print asm-demangle |
스트링에서 \nnn과 같은 8비트 문자의 출력을 셋팅한다.
|
|
set print demangle |
심벌을 출력할 때, 인코딩된 C++ 이름의 결합을 셋팅한다.
|
|
set listsize |
gdb가 디폴트로 출력할 소스 라인의 숫자를 셋팅한다.
|
|
set height |
gdb가 한 페이지에 넣을 수 있는 행수를 셋팅한다.
|
|
set width |
gdb가 한 라인에 넣을 수 있는 글자수를 셋팅한다.
|
|
down-silently |
'down' 명령어와 동일
|
|
up-silently |
'up' 명령어와 동일 |
사용자 정의 명령어
다른 명령어들의 별칭
명령어 목록
|
ni |
명령어 하나를 진행한다. |
|
si |
명령어 하나를 정확하게 진행한다. |
|
where |
모든 스택 프레임을 역추적하면서 그 값을 출력한다. |
|
disable breakpoints |
몇몇 breakpoint를 disable시킨다. |
기 타
명령어 목록
|
complete |
명령어로서 그 행의 나머지에 대해 완성된 것을 출력한다. |
|
remote <command> |
remote 모니터로 명령을 보낸다. |
|
stop |
'stop' 명령어가 없지만, 당신은 'stop'에 대한 hook를 셋팅할 수 있다. 이것은 프로그램 중지가 실행될 때마다 명령어 목록을 셋팅할 수 있게 허용한다. |
유지보수 명령어
몇몇 gdb 명령어들은 gdb 유지보수자에 의한 사용을 위해 제공되어진다. 이들 명령어들은 자주 변하기 쉬우며, 사용자 명령어들 처럼 상세한 설명이 되어 있지 않다.
명령어 목록
|
show watchdog |
watchdog 타이머를 보여준다.
|
|
show targetdebug |
디버깅 중인 타겟을 보여준다.
|
|
maintenance |
GDB 유지보수자에 의한 사용을 위한 명령어들
|
|
maintenance check-symtabs |
psymtab과 symtab의 일관성을 검사한다.
|
|
maintenance space |
공간 사용의 출력을 셋팅한다.
|
|
maintenance time |
시간 사용의 출력을 셋팅한다.
|
|
maintenance demangle |
C++의 분해된 이름을 결합시킨다. |
|
maintenance dump-me |
중대한 에러를 취득; 디버거가 자신의 코어를 덤프하게 한다. |
|
maintenance print |
GDB 내부 상태 출력에 대한 유지보수 명령어
세부 명령어 maintenance print statistics maintenance print objfiles maintenance print psymbols maintenance print msymbols maintenance print symbols maintenance print type |
|
maintenance info |
디버깅 중인 프로그램에 관한 내부 정보를 보여주기 위한 명령어 |
|
set watchdog |
watchdog 타이머를 셋팅한다. non-zero일 때, 이 타임아웃은 타겟에 대해 low-level step을 끝내거나 동작을 계속하게 하기 위해 영원히 기다리는 것 대신 사용되어진다. 만약 지정된 시간 동안 타겟으로부터 응답이 없으면, 에러가 발생한다. |
|
set targetdebug |
디버깅할 타겟을 셋팅한다. non-zero일 때, 디버깅할 타겟은 활성화된다. |
ㅡ 여기까지 ㅡ 출처 : http://database.sarang.net/study/gdb/html/gdb-man.html |