gdb(1) - wariua/manpages-ko GitHub Wiki

NAME

gdb - GNU 디버거

SYNOPSIS

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

DESCRIPTION

GDB 같은 λ””λ²„κ±°μ˜ λͺ©μ μ€ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 κ·Έ "λ‚΄λΆ€"μ—μ„œ 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€λ₯Ό, λ˜λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ£½λŠ” μˆœκ°„μ— 뭘 ν•˜κ³  μžˆμ—ˆλŠ”μ§€λ₯Ό μ•Œ 수 있게 ν•΄ μ£ΌλŠ” 것이닀.

GDBλŠ” 크게 λ‹€μŒ λ„€ κ°€μ§€λ₯Ό (그리고 이λ₯Ό μ§€μ›ν•˜λ©° λ‹€λ₯Έ 것듀을) ν•΄μ„œ ν˜„μž₯μ—μ„œ 버그 μž‘λŠ” κ±Έ λ•λŠ”λ‹€.

  • ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•œλ‹€. λ™μž‘μ— 영ν–₯을 끼칠 수 μžˆμ„ 무엇이든 μ§€μ •ν•  수 μžˆλ‹€.

  • μ§€μ •ν•œ μ‘°κ±΄μ—μ„œ ν”„λ‘œκ·Έλž¨μ΄ μ •μ§€ν•˜κ²Œ ν•œλ‹€.

  • 무슨 일이 μΌμ–΄λ‚¬λŠ”μ§€λ₯Ό ν”„λ‘œκ·Έλž¨ μ •μ§€ μƒνƒœμ—μ„œ μ‘°μ‚¬ν•œλ‹€.

  • ν”„λ‘œκ·Έλž¨ λ‚΄μ˜ 이것 저것을 λ°”κΎΌλ‹€. κ·Έλž˜μ„œ ν•œλ²ˆ μ–΄λ–€ λ²„κ·Έμ˜ 효과λ₯Ό λ°”λ‘œμž‘κ³ μ„œ λ‹€λ₯Έ 버그λ₯Ό μ‚΄νŽ΄λ³Ό 수 있게 ν•΄ μ€€λ‹€.

GDBλ₯Ό μ‚¬μš©ν•΄ C, C++, Fortran, Modula-2둜 μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ„ 디버그 ν•  수 μžˆλ‹€.

μ…Έ λͺ…λ Ή "gdb"둜 GDBλ₯Ό μ‹€ν–‰ν•œλ‹€. μ‹œμž‘ν•˜κ³  λ‚˜λ©΄ GDB λͺ…λ Ή "quit"으둜 λ‚˜κ°€λΌκ³  ν•  λ•ŒκΉŒμ§€ ν„°λ―Έλ„μ—μ„œ λͺ…령듀을 읽어 듀인닀. "help" λͺ…령을 μ“°λ©΄ GDB λ‚΄μž₯ 도움말을 λ³Ό 수 μžˆλ‹€.

아무 μΈμžλ‚˜ μ˜΅μ…˜ 없이도 "gdb"λ₯Ό μ‹€ν–‰ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ GDBλ₯Ό μ‹€ν–‰ν•  λ•Œ κ°€μž₯ ν”ν•œ 방식은 인자 ν•œ κ°œλ‚˜ 두 개둜 μ‹€ν–‰ ν”„λ‘œκ·Έλž¨μ„ μ§€μ •ν•˜λŠ” 것이닀.

gdb program

μ‹€ν–‰ ν”„λ‘œκ·Έλž¨κ³Ό μ½”μ–΄ νŒŒμΌμ„ λͺ¨λ‘ μ§€μ •ν•΄μ„œ μ‹œμž‘ν•  μˆ˜λ„ μžˆλ‹€.

gdb program core

λ˜λŠ” μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό 디버그 ν•˜κ³  μ‹Άλ‹€λ©΄ 두 번째 인자둜 ν”„λ‘œμ„ΈμŠ€ IDλ₯Ό μ§€μ •ν•  수 μžˆλ‹€.

gdb program 1234
gdb -p 1234

그러면 GDBκ°€ ν”„λ‘œμ„ΈμŠ€ 1234에 λΆ™κ²Œ λœλ‹€. (단 1234λΌλŠ” 파일이 μ—†μ–΄μ•Ό ν•œλ‹€. GDBλŠ” μ½”μ–΄ νŒŒμΌμ„ λ¨Όμ € ν™•μΈν•œλ‹€.) -p μ˜΅μ…˜μ„ μ“°λ©΄ 파일λͺ… program을 μƒλž΅ν•  수 μžˆλ‹€.

λ‹€μŒμ€ 자주 μ“°λŠ” λͺ‡ κ°€μ§€ GDB λͺ…령듀이닀.

break [file:]function
(file λ‚΄μ˜) function에 쀑지점을 μ„€μ •ν•œλ‹€.
run [arglist]
(arglist둜) ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•œλ‹€.
bt
백트레이슀. ν”„λ‘œκ·Έλž¨ μŠ€νƒμ„ ν‘œμ‹œν•œλ‹€.
print expr
μ‹μ˜ 값을 ν‘œμ‹œν•œλ‹€.
c
(쀑지점 λ“±μ—μ„œ 멈좘 μƒνƒœμ—μ„œ) ν”„λ‘œκ·Έλž¨ 싀행을 κ³„μ†ν•œλ‹€.
next
(멈좘 μƒνƒœμ—μ„œ) ν”„λ‘œκ·Έλž¨ λ‹€μŒ 행을 μ‹€ν–‰ν•œλ‹€. 행에 ν•¨μˆ˜ 호좜이 있으면 μ‹€ν–‰ν•˜κ³  μ§€λ‚˜κ°„λ‹€.
edit [file:]function
ν˜„μž¬ 멈좰 μžˆλŠ” ν”„λ‘œκ·Έλž¨ 행을 νŽΈμ§‘κΈ°λ‘œ λ³Έλ‹€.
list [file:]function
ν˜„μž¬ 멈좰 μžˆλŠ” κ³³ λΆ€κ·Όμ˜ ν”„λ‘œκ·Έλž¨ ν…μŠ€νŠΈλ₯Ό ν‘œμ‹œν•œλ‹€.
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" ν•­λͺ©μœΌλ‘œ 같은 λ‚΄μš©μ„ λ³Ό 수 μžˆλ‹€.

OPTIONS

μ˜΅μ…˜μ΄ μ•„λ‹Œ μΈμžκ°€ 있으면 μ‹€ν–‰ 파일과 μ½”μ–΄ νŒŒμΌμ„ (λ˜λŠ” ν”„λ‘œμ„ΈμŠ€IDλ₯Ό) μ§€μ •ν•˜κ²Œ λœλ‹€. 즉 μ—°κ΄€λœ μ˜΅μ…˜ ν”Œλž˜κ·Έ μ—†λŠ” 첫 번째 μΈμžλŠ” -se μ˜΅μ…˜κ³Ό κ°™μœΌλ©° 두 λ²ˆμ§Έκ°€ 있고 파일 이름이면 -c μ˜΅μ…˜κ³Ό κ°™λ‹€. μ—¬λŸ¬ μ˜΅μ…˜λ“€μ—λŠ” κΈ΄ ν˜•νƒœμ™€ 짧은 ν˜•νƒœκ°€ μžˆλ‹€. κΈ΄ ν˜•νƒœλŠ” λ‹€λ₯Έ μ˜΅μ…˜κ³Ό ꡬ뢄이 κ°€λŠ₯ν•˜κΈ°λ§Œ ν•˜λ‹€λ©΄ μΌλΆ€λ§Œ μž…λ ₯ν•˜λ”λΌλ„ μΈμ‹ν•œλ‹€. (μ›ν•œλ‹€λ©΄ μ˜΅μ…˜ μΈμžμ— - λŒ€μ‹  +λ₯Ό 뢙일 μˆ˜λ„ μžˆμ§€λ§Œ μ•„λž˜μ—μ„  일반적 관행을 λ”°λ₯Έλ‹€.)

λͺ¨λ“  μ˜΅μ…˜κ³Ό λͺ…λ Ήν–‰ μΈμžλ“€μ€ 순차적으둜 μ²˜λ¦¬λœλ‹€. -x μ˜΅μ…˜ μ‚¬μš© μ‹œ μˆœμ„œμ— 따라 차이가 생긴닀.

-help
-h
λͺ¨λ“  μ˜΅μ…˜λ“€μ„ κ°„λ‹¨ν•œ μ„€λͺ…κ³Ό ν•¨κ»˜ λ‚˜μ—΄ν•œλ‹€.
-symbols=file
-s file
파일 fileμ—μ„œ 심볼 ν…Œμ΄λΈ”μ„ 읽어 듀인닀.
-write
μ‹€ν–‰ 파일과 μ½”μ–΄ 파일둜 μ“°κΈ°λ₯Ό ν•  수 있게 ν•œλ‹€.
-exec=file
-e file
파일 file을 μ‹€ν–‰ 파일둜 μ‚¬μš©ν•΄μ„œ μ μ ˆν•œ λ•Œμ— μ‹€ν–‰ν•˜κ³  μ½”μ–΄ 덀프와 μ‘°ν•©ν•΄μ„œ 초기 데이터λ₯Ό μ•Œμ•„λ‚΄λŠ” 데 μ“΄λ‹€.
-se=file
파일 fileμ—μ„œ 심볼 ν…Œμ΄λΈ”μ„ 읽어 듀이고 μ‹€ν–‰ 파일둜 μ‚¬μš©ν•œλ‹€.
-core=file
-c file
파일 file을 μ½”μ–΄ λ€ν”„λ‘œ μ‚¬μš©ν•΄μ„œ μ‘°μ‚¬ν•œλ‹€.
-command=file
-x file
파일 file에 μžˆλŠ” GDB λͺ…령듀을 μ‹€ν–‰ν•œλ‹€.
-ex command
μ£Όμ–΄μ§„ GDB λͺ…λ Ή commandλ₯Ό μ‹€ν–‰ν•œλ‹€.
-directory=directory
-d directory
μ†ŒμŠ€ 파일 탐색 κ²½λ‘œμ— directoryλ₯Ό μΆ”κ°€ν•œλ‹€.
-nh
~/.gdbinit의 λͺ…령을 μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€.
-nx
-n
μ΄ˆκΈ°ν™” 파일 .gdbinit의 λͺ…령을 μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€.
-quiet
-q
쑰용히 ν•œλ‹€. μ†Œκ°œ 및 μ €μž‘κΆŒ λ©”μ‹œμ§€λ₯Ό 찍지 μ•ŠλŠ”λ‹€. 배치 λͺ¨λ“œμ—μ„œλ„ 이 λ©”μ‹œμ§€λ“€μ„ μˆ¨κΈ΄λ‹€.
-batch

배치 λͺ¨λ“œλ‘œ μ‹€ν–‰ν•œλ‹€. -x둜 μ§€μ •ν•œ λͺ…λ Ή νŒŒμΌλ“€ λͺ¨λ‘λ₯Ό (그리고 κΈˆμ§€ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ .gdbinit을) μ²˜λ¦¬ν•œ 후에 μƒνƒœ 0으둜 끝낸닀. λͺ…λ Ή 파일 λ‚΄μ˜ GDB λͺ…령을 μ‹€ν–‰ν•˜λ‹€κ°€ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ 0 μ•„λ‹Œ μƒνƒœ κ°’μœΌλ‘œ 끝낸닀.

GDBλ₯Ό ν•„ν„°λ‘œ μ‹€ν–‰ν•  λ•Œ, 예λ₯Ό λ“€μ–΄ λ‹€λ₯Έ μ»΄ν“¨ν„°μ˜ ν”„λ‘œκ·Έλž¨μ„ λ‚΄λ €λ°›μ•„μ„œ 돌릴 λ•Œ 배치 λͺ¨λ“œκ°€ μœ μš©ν•  수 μžˆλ‹€. 더 νŽΈλ¦¬ν•˜λ„λ‘ 배치 λͺ¨λ“œλ‘œ 돌 λ•ŒλŠ” λ‹€μŒ λ©”μ‹œμ§€λ₯Ό 찍지 μ•ŠλŠ”λ‹€. (보톡 λ•ŒλŠ” GDB μ œμ–΄ ν•˜μ—μ„œ λ„λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œν•  λ•Œλ§ˆλ‹€ μ°λŠ”λ‹€.)

Program exited normally.
-cd=directory
ν˜„μž¬ 디렉터리 λŒ€μ‹  directoryλ₯Ό μž‘μ—… λ””λ ‰ν„°λ¦¬λ‘œ ν•΄μ„œ GDBλ₯Ό μ‹€ν–‰ν•œλ‹€.
-fullname
-f
Emacsμ—μ„œ GDBλ₯Ό ν•˜μœ„ ν”„λ‘œμ„ΈμŠ€λ‘œ μ‹€ν–‰ν•  λ•Œ 이 μ˜΅μ…˜μ„ μ„€μ •ν•œλ‹€. GDBμ—μ„œ μŠ€νƒ ν”„λ ˆμž„μ„ ν‘œμ‹œν•  λ•Œ(ν”„λ‘œκ·Έλž¨μ΄ 멈좜 λ•Œ 포함)λ§ˆλ‹€ 전체 파일λͺ…κ³Ό ν–‰ 번호λ₯Ό ν‘œμ€€μ μ΄κ³  인식 κ°€λŠ₯ν•œ λ°©μ‹μœΌλ‘œ 좜λ ₯ν•˜λ„λ‘ ν•œλ‹€. κ·Έ 인식 κ°€λŠ₯ν•œ ν˜•μ‹μ΄λž€ `\032` 문자 두 개 λ‹€μŒμ— 파일 이름이 였고, 콜둠으둜 κ΅¬λΆ„λœ ν–‰ λ²ˆν˜Έμ™€ 문자 μœ„μΉ˜κ°€ 였고, κ°œν–‰μ΄ μ˜€λŠ” 것이닀. Emacsμ—μ„œ GDB둜의 μΈν„°νŽ˜μ΄μŠ€ ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” `\032` 문자 두 개λ₯Ό ν”„λ ˆμž„ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν‘œμ‹œν•˜λΌλŠ” μ‹ ν˜Έλ‘œ μ“΄λ‹€.
-b bps
GDBμ—μ„œ 원격 디버깅에 μ“°λŠ” μ‹œλ¦¬μ–Ό μΈν„°νŽ˜μ΄μŠ€μ˜ νšŒμ„  속도(λ³΄λ“œ 속도, 즉 μ΄ˆλ‹Ή λΉ„νŠΈ)λ₯Ό μ„€μ •ν•œλ‹€.
-tty=device
μž₯치 deviceλ₯Ό ν”„λ‘œκ·Έλž¨μ˜ ν‘œμ€€ μž…μΆœλ ₯으둜 μ‚¬μš©ν•΄μ„œ μ‹€ν–‰ν•œλ‹€.

SEE ALSO

μ™„μ „ν•œ GDB λ¬Έμ„œλŠ” Texinfo μ„€λͺ…μ„œ ν˜•νƒœλ‘œ μœ μ§€ν•œλ‹€. "info"와 "gdb" ν”„λ‘œκ·Έλž¨, 그리고 GDB의 Texinfo λ¬Έμ„œκ°€ μ˜¬λ°”λ‘œ μ„€μΉ˜λΌ μžˆλ‹€λ©΄ λ‹€μŒ λͺ…λ ΉμœΌλ‘œ μ™„μ „ν•œ μ„€λͺ…μ„œλ₯Ό λ³Ό 수 μžˆλ‹€.

info gdb

Using GDB: A Guide to the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch, 1991λ…„ 7μ›”.

COPYRIGHT

Copyright (c) 1988-2018 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being "Free Software" and "Free Software Needs Free Documentation", with the Front-Cover Texts being "A GNU Manual," and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: "You are free to copy and modify this GNU Manual. Buying copies from GNU Press supports the FSF in developing GNU and promoting software freedom."


2018-04-09

⚠️ **GitHub.com Fallback** ⚠️