您的位置:首页 > 运维架构 > Linux

Linux编程参考资料——GDB调试器手册

2019-05-01 17:46 85 查看

GDB(1) GNU Development Tools GDB(1)

名字
gdb - GUN调试器

简介
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]

描述
        像gdb这样的调试器的目的是让您看到在另一个程序执行时正在“内部”发生什么-或者当它崩溃时另一个程序正在做什么。
        GDB可以做四种主要的事情(加上支持这些的其他事情),以帮助您在行为中捕获bug:

        启动您的程序,指定任何可能影响其行为的内容。
        使程序在指定条件下停止。
        检查程序停止时发生了什么。
        更改程序中的内容,这样您就可以尝试纠正一个bug的影响,然后继续了解另一个bug。

        您可以使用gdb来调试用C、C@t{}、Fortran和modula-2编写的程序。

        使用shell命令“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,您可以省略程序文件名。

        下面是一些最常用的gdb命令:
1、
break [file:]Functiop
        在函数处设置一个断点(在文件中)。
2、
run [arglist]
        启动您的程序(如果指定,使用arglist)。
3、
bt Backtrace
        显示程序栈。
4、
print expr
        显示表达式的值。
5、
c
        继续运行您的程序(停止后,例如在断点)。
6、
next
        执行下一个程序行(停止后);跳过行中的任何函数调用。
7、
edit[file:]
        查看程序当前停止的行。
8、
list[file:]
        函数在程序当前停止的附近键入该程序的文本。
9、
step
        执行下一程序行(停止后);进入任何调用的函数。
10、
help [name]
        显示有关gdb命令名的信息,或有关使用gdb的一般信息。
11、
quit
        退出GDB。

        有关gdb的详细信息,请参阅使用gdb:GNU源代码级调试器指南,由Richard M.Stallman和Roland H.Pesch编写。该文本与“info”程序中的“gdb”条目在线提供。

选项
        选项以外的任何参数都指定可执行文件和核心文件(或进程ID);也就是说,没有关联的选项标志的第一个参数等效于-se选项,如果有,则第二个参数等同于-c选项(如果它是文件的名称)。许多选项都有长的和短的形式;这两个选项都显示在这里。如果截断长窗体,则也会识别它们,只要存在足够多的选项以使其明确无误。(如果您愿意,可以用选项参数(而不是-)标记选项参数,尽管我们演示了更常见的约定。

        您提供的所有选项和命令行参数都按顺序处理。当使用-x选项时,顺序会产生影响。
1、
-help
-h
        列出所有选项,并作简要解释。
2、
-symbols=file
-s file
        从文件中读取符号表。
3、
-write
        将启用写入可执行文件和核心文件。
4、
-exec=file
-e file
        将文件用作可执行文件,以便在适当时执行,并与核心转储一起检查纯数据。
5、
-se=file
        从文件中读取符号表,并将其用作可执行文件。
6、
-core=file
-c file
        使用文件作为核心转储检查。
7、
-command=file
-x file
        从文件执行gdb命令。
8、
-ex command
        执行给定的gdb命令。
9、
-directory=directory
-d directory
        将目录添加到搜索源文件的路径中。
10、
-nh
        不执行~/.gdbinit中的命令。
11、
-nx
-n
        不执行任何.gdbinit初始化文件的命令。
12、
-quiet
-q “Quiet”
        不打印介绍性和版权信息。这些消息也以批处理模式被抑制。
13、
-batch
        以批处理模式运行。在处理所有使用-x(和.gdbinit,如果不受抑制)指定的命令文件后,使用状态0退出。如果在命令文件中执行gdb命令时发生错误,则以非零状态退出。
        批处理模式对于将gdb作为筛选器运行可能很有用,例如下载并在另一台计算机上运行程序;为了使其更有用,消息
        Program exited normally.
        程序正常运行。
        (这通常是在GDB控制下运行的程序终止时发出的)在批处理模式下运行时不发出。
14、
-cd=directory
        使用目录来运行gdb,而不是使用当前目录。
15、
-fullname
-f
        Emacs在将gdb作为子进程运行时设置此选项。它告诉gdb以标准的方式输出完整的文件名和行号,每次显示堆栈帧(这包括每次程序停止时)都可以识别。这种可识别的格式看起来像两个\032个字符,后面是文件名、行号和字符位置,用冒号分隔,还有一个换行符。Emacs-to-GDB接口程序使用两个\032字符作为信号来显示帧的源代码。
16、
-b bps
        设置GDB用于远程调试的任何串行接口的线速度(波特率或位每秒)。
17、
-tty=device
        使用程序的标准输入和输出运行设备。

参考
        GDB的完整文档作为TXTINFO手册进行维护。如果在您的站点上正确安装了“info”和“gdb”程序和gdb的文本文档,则输入命令
        info gdb
        应该能让你查阅完整的手册。
        使用GDB:GNU源级调试器指南,Richard M.Stallman和Roland H.Pesch,1991年7月。

版权
        Copyright © 1988-2016 Free Software Foundation, Inc.
        根据GNU免费文件许可证的条款,1.3版或自由软件基金会发布的任何以后版本准许复制、分发和/或修改本文件;不变的部分是“自由软件”和“自由软件需要免费文件”,前封面文本是“GNU手册”,并附有后面的文本,如下文(A)。
        (A)FSF的封面文本是:“您可以自由地复制和修改本GNU手册。从GNU出版社购买副本支持FSF开发GNU和促进软件自由。”

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: