gdb总结(转)
时间:2009-07-24 来源:integergx
名称
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。 o 启动您的程序,并列出可能会影响它运行的一些信息
o 使您的程序在特定条件下停止下来
o 当程序停下来的时候,检查发生了什么
o 对程序做出相应的调整,这样您就能尝试纠正一个错误并继续发现其它错误 您能使用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命令: file [filename]
装入想要调试的可执行文件 kill [filename]
终止正在调试的程序 break [file:]function
在(file文件的)function函数中设置一个断点 clear
删除一个断点,这个命令需要指定代码行或者函数名作为参数 run [arglist]
运行您的程序 (如果指定了arglist,则将arglist作为参数运行程序) bt Backtrace: 显示程序堆栈信息 print expr
打印表达式的值 continue
继续运行您的程序 (在停止之后,比如在一个断点之后) list
列出产生执行文件的源代码的一部分 next
单步执行 (在停止之后); 跳过函数调用 nexti
执行下一行的源代码中的一条汇编指令 set
设置变量的值。例如:set nval=54 将把54保存到nval变量中 step
单步执行 (在停止之后); 进入函数调用 stepi
继续执行程序下一行源代码中的汇编指令。如果是函数调用,这个命令将进入函数的内部,单步执行函数中的汇编代码 watch
使你能监视一个变量的值而不管它何时被改变 rwatch
指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令 awatch
指定一个变量,如果这个变量被读或者被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令 Ctrl-C
在当前位置停止执行正在执行的程序,断点在当前行 disable
禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数 display
在断点的停止的地方,显示指定的表达式的值。(显示变量) undisplay
删除一个display设置的变量显示。这个命令需要将display list中的索引做参数 enable
允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数 finish
继续执行,直到当前函数返回 ignore
忽略某个断点制定的次数。例:ignore 4 23 忽略断点4的23次运行,在第24次的时候中断 info [name]
查看name信息 load
动态载入一个可执行文件到调试器 xbreak
在当前函数的退出的点上设置一个断点 whatis
显示变量的值和类型 ptype
显示变量的类型 return
强制从当前函数返回 txbreak
在当前函数的退出的点上设置一个临时的断点(只可使用一次) make
使你能不退出 gdb 就可以重新产生可执行文件 shell
使你能不离开 gdb 就执行 UNIX shell 命令 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作为你程序运行的标准输入输出.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/samehai/archive/2007/09/27/1803521.aspx
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。 o 启动您的程序,并列出可能会影响它运行的一些信息
o 使您的程序在特定条件下停止下来
o 当程序停下来的时候,检查发生了什么
o 对程序做出相应的调整,这样您就能尝试纠正一个错误并继续发现其它错误 您能使用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命令: file [filename]
装入想要调试的可执行文件 kill [filename]
终止正在调试的程序 break [file:]function
在(file文件的)function函数中设置一个断点 clear
删除一个断点,这个命令需要指定代码行或者函数名作为参数 run [arglist]
运行您的程序 (如果指定了arglist,则将arglist作为参数运行程序) bt Backtrace: 显示程序堆栈信息 print expr
打印表达式的值 continue
继续运行您的程序 (在停止之后,比如在一个断点之后) list
列出产生执行文件的源代码的一部分 next
单步执行 (在停止之后); 跳过函数调用 nexti
执行下一行的源代码中的一条汇编指令 set
设置变量的值。例如:set nval=54 将把54保存到nval变量中 step
单步执行 (在停止之后); 进入函数调用 stepi
继续执行程序下一行源代码中的汇编指令。如果是函数调用,这个命令将进入函数的内部,单步执行函数中的汇编代码 watch
使你能监视一个变量的值而不管它何时被改变 rwatch
指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令 awatch
指定一个变量,如果这个变量被读或者被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令。参考rwatch和watch命令 Ctrl-C
在当前位置停止执行正在执行的程序,断点在当前行 disable
禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数 display
在断点的停止的地方,显示指定的表达式的值。(显示变量) undisplay
删除一个display设置的变量显示。这个命令需要将display list中的索引做参数 enable
允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数 finish
继续执行,直到当前函数返回 ignore
忽略某个断点制定的次数。例:ignore 4 23 忽略断点4的23次运行,在第24次的时候中断 info [name]
查看name信息 load
动态载入一个可执行文件到调试器 xbreak
在当前函数的退出的点上设置一个断点 whatis
显示变量的值和类型 ptype
显示变量的类型 return
强制从当前函数返回 txbreak
在当前函数的退出的点上设置一个临时的断点(只可使用一次) make
使你能不退出 gdb 就可以重新产生可执行文件 shell
使你能不离开 gdb 就执行 UNIX shell 命令 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作为你程序运行的标准输入输出.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/samehai/archive/2007/09/27/1803521.aspx
相关阅读 更多 +
排行榜 更多 +