- 论坛徽章:
- 0
|
gdb(1) GNU 工具 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主要可以做4大类事(加上一些其他的辅助工作),以帮助用户在程序运行过程中发现bug。
l 启动您的程序,并列出可能会影响它运行的一些信息
l 使您的程序在特定条件下停止下来
l 当程序停下来的时候,检查发生了什么
l 对程序做出相应的调整,这样您就能尝试纠正一个错误并继续发现其它错误
您能使用GDB调试用C、C++、Modula-2写的程序。等GNU Fortran编译器准备好过后,GDB将提供对Fortran的支持
GDB通过在命令行方式下输入gdb来执行。启动过后,GDB会从终端读取命令,直到您输入GDB命令quit使GDB退出。您能通过GDB命令help获取在线帮助。
您能以无参数无选项的形式运行GDB,不过通常的情况是以一到两个参数运行GDB,以待调试的可执行程序名为参数
gdb 程序名
您能用两个参数来运行GDB,可执行程序名与core文件(译注:不知道怎么翻译好,就不翻译了^^)。
gdb 程序名 core
您可以以进程ID作为第二个参数,以调式一个正在运行的进程
gdb 程序名 1234
将会把gdb附在进程1234之上(除非您正好有个文件叫1234,gdb总是先查找core文件)
下面是一些最常用的GDB命令
break [file:]function 在(file文件的)function函数中设置一个断点
run [arglist] 运行您的程序 (如果指定了arglist,则将arglist作为参数运行程序).
bt Backtrace: 显示程序堆栈信息
print expr 打印表达式的值
c 继续运行您的程序 (在停止之后,比如在一个断点之后).
next 单步执行 (在停止之后); 跳过函数调用
step 单步执行 (在停止之后); 进入函数调用.
help [name] 显示GDB命令的信息,或者显示如何使用GDB的总体信息
quit 退出gdb.
要得到所有使用GDB的资料,请参考Using GDB: A Guide to the GNU Source-Level Debugger, by Richard M. Stallman and Roland H. Pesch. 当用info查看的时候,也能看到相同的文章
选项
任何参数而非选项指明了一个可执行文件及core 文件(或者进程ID);所遇到的第一个未关联选项标志的参数与 '-se' 选项等价,第二个,如果存在,且是一个文件的名字,则等价与 '-c' 选项。许多选项都有一个长格式与短格式;都会在这里表示出来。如果你把一个长格式截短,只要不引起歧义,那么它还是可以被识别。(如果你愿意,你可以使用 '+' 而非 '-' 标记选项参数,不过我们在例子中仍然遵从通常的惯例)
-help
-h 列出所有选项,并附简要说明。
-symbols=file
-s file 读出文件(file)中的符号表。
-write 开通(enable)往可执行文件和核心文件写的权限。
-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 把Dicrctory加入源文件搜索的路径中。
-nx
-n 不从任何.gdbinit初始化文件中执行命令。通常情况下,这些文件中的命令是在所有命令选项和参数处理完后才执行。
-quiet
-q "Quiet".不输入介绍和版权信息。这些信息输出在batch模式下也被关闭。
-batch 运行batch模式。在处理完所有用'-x'选项指定的命令文件(还有'.gdbi-nit',如果没禁用)后退出,并返回状态码0.如果在命令文件中的命令被执行时发生错误,则退出,并返回状态码非0.batch模式对于运行GDB作为过滤器也许很有用,比如要从另一台电脑上下载并运行一个程序;为了让这些更有用,当在batch模式下运行时,消息:
Program exited normally.
(不论什么时候,一个程序在GDB控制下终止运行,这条消息都会正常发出.),将不会发出.
-cd=Directory
运行GDB,使用Directory作为它的工作目录,取代当前工作目录.
-fullname
-f 当Emacs让GDB作为一个子进程运行时,设置这个选项.它告诉GDB每当一个堆栈结构(栈帧)显示出来(包括每次程序停止)就用标准的,认同的方式输出文件全名和行号.这里,认同的格式看起来像两个' 32'字符,紧跟文件名,行号和字符位置(由冒号,换行符分隔).Emacs同GDB的接口程序使用这两个'32'字符作为一个符号为框架来显示源代码.
-b Bps 设置行速(波特率或bits/s).在远程调试中GDB在任何串行接口中使用的行速.
-tty=Device 使用Device作为你程序运行的标准输入输出.
SEE ALSO
`gdb' entry in info; Using GDB: A Guide to the GNU Source-Level Debug-ger, 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 per-
mission notice identical to this one.
Permission is granted to copy and distribute translations of this man-
ual into another language, under the above conditions for modified ver-
sions, except that this permission notice may be included in transla-
tions approved by the Free Software Foundation instead of in the origi-
nal English.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18381/showart_162019.html |
|