NAME
gdb - The GNU Debugger
SYNOPSIS
gdb [OPTIONS] [prog|prog procID|prog core]
DESCRIPTION
调试器(如GDB)的目的是让你看到另一个程序执行时“内部”发生了什么,或者另一个程序崩溃时正在做什么。
GDB可以做四种主要的事情(以及支持这些事情的其他事情)来帮助你当场捕获bug:
- 启动程序,指定任何可能影响其行为的东西
- 让程序在特定条件下停止
- 检查程序停止时发生了什么
- 修改程序中的一些东西,这样你就可以尝试纠正一个bug的影响,并继续了解另一个bug
你可以使用GDB来调试用C、c++、Fortran和Modula-2编写的程序。
GDB可以通过shell命令" gdb "调用。启动后,它会从终端读取命令,直到你用GDB命令"quit"或"exit"让它退出。你可以使用命令“help”从GDB本身获得在线帮助。
你可以不带任何参数或选项运行“gdb”;但最常见的启动GDB的方式是用一个或两个参数,指定一个可执行程序作为参数:
gdb program
你也可以指定一个可执行程序和一个核心文件:
gdb program core
相反,如果你想调试正在运行的进程,你可以指定进程ID作为第二个参数,或者使用选项“-p”:
gdb program 1234
gdb -p 1234
将GDB附加到进程1234。使用选项-p,可以省略程序文件名。
下面是一些最常用的GDB命令。
break [file:][function|line]
在函数或行(在文件中)处设置断点。
run [arglist]
启动程序(如果指定,使用arglist)。
bt Backtrace
显示程序堆栈。
print expr
显示表达式的值。
c
继续运行程序(在停止后,例如在断点处)。
next
执行下一行程序(在停止后);单步执行代码行中的任何函数调用。
edit [file:]function
请查看程序当前停止的那一行。
list [file:]function
在程序当前停止位置附近输入程序的文本。
step
执行下一行程序(在停止后);进入该行中的任何函数调用。
help [name]
显示有关GDB命令名称的信息,或使用GDB的一般信息。
quit
exit
退出GDB。
有关GDB的详细信息,请参阅Richard M. Stallman和Roland H. Pesch合著的《使用GDB: GNU源代码级调试器指南》。与“info”程序中的“gdb”条目相同的文本可以在网上找到。
OPTIONS
除options之外的任何参数指定可执行文件和核心文件(或进程ID);也就是说,没有关联选项标志的第一个参数相当于——se选项;第二个参数(如果有的话)相当于-c选项(如果它是文件名称)。许多选项既有长形式也有缩写形式;两者都显示在这里。如果你把它们截断,也能识别出长格式,只要有足够多的选项,就不会有歧义。
缩略形式在这里用-表示,长形式用–表示,以反映它们在help中的显示方式。不过,GDB对大多数选项都遵循以下约定。
"--option=value"
"--option value"
"-option=value"
"-option value"
"--o=value"
"--o value"
"-o=value"
"-o value"
您提供的所有选项和命令行参数都按顺序处理。使用-x选项时,顺序会有所不同。
选项 | 含义 |
---|---|
–help,-h | 列出所有选项,并简要说明 |
–symbols=file,-s file | 从文件中读取符号表 |
–write | 允许写入可执行文件和核心文件 |
–exec=file,-e file | 使用file作为可执行文件,以便在适当的时候执行,并与核心转储一起检查纯数据 |
–se=file | 从文件中读取符号表并将其用作可执行文件 |
–core=file,-c file | 使用文件作为核心转储进行检查 |
–command=file,-x file | 从文件中执行GDB命令。 |
–eval-command=command,-ex command | 执行给定的GDB命令。 |
–init-eval-command=command,-iex | 加载次等文件前,请执行GDB命令。 |
–directory=directory,-d directory | 将directory添加到搜索源文件的路径中 |
–nh | Do not execute commands from ~/.config/gdb/gdbinit, ~/.gdbinit, ~/.config/gdb/gdbearlyinit, or ~/.gdbearlyinit |
–nx,-n | 不执行任何。gdbinit或。gdbearlyinit初始化文件中的命令 |
–quiet,–silent,-q | “安静”。请勿打印介绍和版权信息。这些消息在批处理模式下也会被抑制。 |
–batch | 批处理模式运行。在处理所有使用 -x 指定的命令文件(以及 .gdbinit,如果未禁用的话)后,以状态 0 退出。如果在执行命令文件中的 GDB 命令时发生错误,则以非零状态退出。… |
–batch-silent | 以批处理模式运行,就像批处理一样,但是完全静音。所有GDB输出都被抑制(stderr不受影响)。这比“沉默”要安静得多,对于互动会话来说毫无用处。… |
–args prog [arglist] | 更改命令行解释,以便将该选项后面的参数作为参数传递给下一个选项。… |
–pid=pid | 将GDB附加到一个已经运行的程序,使用PID PID。 |
–tui | 打开终端用户界面。 |
–readnow | 在第一次访问时从给定的symfile中读取所有符号。 |
–readnever | 不要读取符号文件。 |
–return-child-result | GDB的退出代码将与子进程的退出代码相同。 |
–configuration | 打印有关GDB配置的详细信息,然后退出。 |
–version | 打印版本信息,然后退出。 |
–cd=directory | 运行GDB时,使用directory作为工作目录,而不是当前目录。 |
–data-directory=directory,-D | 使用directory作为数据目录运行GDB。数据目录是GDB搜索辅助文件的地方。 |
–fullname,-f | Emacs在将GDB作为子进程运行时设置此选项。它告诉GDB在每次显示堆栈帧时(包括每次程序停止时)以标准的、可识别的方式输出完整的文件名和行号。这种可识别的格式看起来像两个\032字符,后面是文件名、行号和字符位置,以冒号分隔,然后是换行符。Emacs - to - GDB接口程序使用两个\032字符作为信号来显示帧的源代码。 |
-b baudrate | 设置GDB用于远程调试的串行接口的线路速度(波特率或每秒比特数)。 |
-l timeout | 设置远程调试的超时时间(以秒为单位)。 |
–tty=device | 使用设备运行程序的标准输入和输出。 |
SEE ALSO
GDB的完整文档以Texinfo手册的形式维护。如果“info”和“gdb”程序以及gdb的Texinfo文档已正确安装在您的站点上,则命令
info gdb
应该能让你看到完整的手册。
使用GDB: GNU源代码级调试器指南,Richard M. Stallman和Roland H. Pesch, 1991年7月。
COPYRIGHT
版权所有Free Software Foundation, Inc.