gdb使用手册

在linux系统中,通过man gdb可以查看gdb使用手册,手册是英文的,闲来无事,翻译一下,就当是学习了.

名称

gdb - GNU调试器

使用简介

gdb [OPTIONS] [prog|prog procID|prog core]

描述

像GDB这样的调试器的目的是,帮你看清楚当一个程序执行时,它"内部"正在发生什么; 或者当前这个程序崩溃时,它正在做什么.
GDB主要可以做如下四类事情,帮助你在如下行为中捕获异常:

  • 启动你的程序,指出可能影响它的行为的任何事情
  • 让你的程序在特定的条件下暂停
  • 当你的程序已经暂停后,测试发生了什么.
  • 在你的程序中做一些改变, 使得你可以通过实验纠正一个bug的影响了解另一个bug.

你可以使用GDB来调试C/C++/Fortran/Modula-2写的程序.

GDB是关于shell命令的"gdb". 一旦启动, 它从终端读取命令,直到你通过"quit"或"exit"告诉它退出. 你可以使用命令"help"从GDB获取实时的帮助.
你可以以没有参数或选项的方式运行"gdb", 但是最常用启动gdb的方式是带1~2个参数, 指定可执行程序作为参数:

gdb program

你也可以通过可执行程序+core文件的方式启动:

gdb program core

如果你想调试一个运行中的程序, 你也可以, 指定一个进程ID作为第二个参数, 或者使用选项 “-p”:

gdb program 1234
gdb -p 1234

这会将GDB关联到进程号为 1234的程序上, 通过选项"-p", 你可以省略程序文件名.

下面是最常用到的gdb命令

break [file:] [function|line]
在函数function处或者文件的line行处, 设置一个断点.

run [arglist]
(以参数arglist的方式,如果带了的话)启动你的程序

bt
Backtrace, 显示程序栈

print expr
显示表达式的值

c
继续运行你的程序(在停止处, 如, 在断点)

next
执行下一行程序(在暂停处), 跨过这一行任何的函数调用.

help [name]
展示GDB命令名字的信息, 或者一般信息关于GDB

quit
exit
退出程序

关于GDB的全部细节, 见"Using GDB: A Guide to the GNU Source-Level Debugger", by Richard M. Stallman and Rolman H. Pesch. 在进入gdb后, 通过 “info” 命令可获得相同的内容.

OPTIONS参数

除options以外的任何参数指定可执行文件和core文件(或进程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
允许写入可执行文件和core文件。

--exec=file
-e file
在适当时,将"file"换成可执行文件来执行,与coredump文件一起检查里面的纯数据。

--se=file
从"file"中读取符号表,并将它作为可执行文件

--core=file
-c file
将"file"换成core dump文件来检查

--command=file
-x file
从"file"中执行gdb命令

--eval-command=command
-ex command
执行给定的GDB命令

--init-eval-command=command
-iex
加载下级文件前执行GDB命令。

--directory=directory
-d directory
添加"directory"到路径,用来搜索源文件

-nh
不要从  ~/.config/gdb/gdbinit, ~/.gdbinit, ~/.config/gdb/gdbearlyinit, 或 ~/.gdbearlyinit 执行命令

--quiet
--silent
-q "Quiet" 
不要打印介绍信息和版权信息。这些消息在批处理模式下也会被抑制。

--batch
以batch的模式运行, 在指定-x运行完所有的命令文件中的命令后(以及.gdbinit, 如果不加以抑制的话),以状态0的形式退出. 如果在执行命令文件中的GDB命令时出错了, 以非0的状态退出.
Batch模式对于将GDB作为过滤器运行可能很有用, 例如, 在另一台电脑上下载和运行另一台程序, 为了使这个更有用, the message
                                                   Program exited normally
(通常在GDB控制下运行的程序终止时发出)在Batch理模式下运行时不会发出。

--batch-silent
以batch模式运行, 就像--batch, 但是完全静默. 所有GDB输出都被抑制(stderr不受影响)。这比 --silent更为静默, 并且在交互环节下无效.
例如,当使用给出Loading环节消息的目标时,这尤其有用。
注意, 目标通过GDB给定他们的输出, 而不是直接stdout输出, 也会被置为静默.

--args prog [arglist]
更改命令行解释,以便将该选项后面的参数作为参数传递给下一个选项。例如, 执行这个命令:
gdb ./a.out -q
这将以 -q 的形式启动GDB, 不打印介绍信息, 另一方面, 使用:
gdb --args ./a.out -q
以带有介绍信息的方式启动GDB, 并将参数传递给下一个选项.

--pid=pid
将GDB关联到一个进程号为 "pid" 的已经运行的程序

--tui
使用接口打开终端

--readnow
在一开始的时候从符号文件中读取所有的符号

--readnever
不要读取符号文件

--dbx
以DBX兼容的模式运行

--return-child-result
GDB的退出码和它子gdb的退出码一直

--configuration
打印GDB配置的细节然后退出

--cd=directory
使用 directory 作为工作目录来运行GDB, 而不是当前目录.

--data-directory=directory
-D 使用 directory作为数据目录运行GDB, 数据目录使GDB搜索时辅助文件时的目录

--fullname
-f
Emacs将GDB作为一个子进程运行时设置这个选项.它告诉GDB以标准输出完整的文件名和行号, 每次显示堆栈帧(包括每次程序停止)时可识别的样式。这个可识别的模式, 看起来像2个 \032 字符, 后跟文件名、行号和字符位置,以冒号和换行符分隔. Emaces-to-GDB接口程序使用两个 \032字符作为显示这一帧源码的信号.

-b baudrate
设置通过远程调试GDB的任意接口的line speed(波特率或位/秒)

-l timeout
对远程调试, 设置超时时间, 单位秒

--tty=device
使用 device 运行程序的标准输入和输出

另请参阅

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, July 1991.

版权

版权所有© 1988-2022自由软件基金会

在GNU自由文档许可证1.3版或自由软件基金会发布的任何更新版本的条款下,被授予复制、分发和/或修改本文档的许可;不变章节是“自由软件”和“自由软件需要自由文档”,前封面文本是“GNU手册”,后封面文本如下面(A)所示。
(a) FSF的封底文字是:“您可以自由地复制和修改本GNU手册。从GNU出版社购买拷贝支持自由软件基金会开发GNU和促进软件自由。”

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值