gdb调试工具参数说明

Name

         gdb - The GNU Debugger

概要

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可以做四种主要的事情(以及支持这些事情的其他事情)来帮助您捕获行为中的错误:

  1. 启动程序,并指定可能影响其行为的所有内容。
  2. 使程序在指定条件下停止。
  3. 检查程序停止时发生的情况。
  4. 更改程序中的内容,以便您可以尝试纠正一个错误的影响,然后继续学习另一个错误。

       您可以使用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命令:

  • 在函数处设置断点(在文件中)
(gdb) break [file:]functiop

 

  • 启动程序(使用arglist,如果已指定)
(gdb) run [arglist]  //r
  • 显示程序堆栈       
(gdb) bt  //Backtrace
  • 显示表达式的值
(gdb) print expr  //p
  • 继续运行程序(停止后,例如在断点处)
(gdb) c
(gdb) continue  

 

  • 执行下一个程序行(停止后); 单步执行该行中的所有函数调用
(gdb) next
(gdb) n

 

  • 看一下当前停止的程序行
(gdb) edit [file:]function

     

  • 在程序当前停止的位置附近键入程序的文本
(gdb)  list [file:]function

     

  • 执行下一个程序行(停止后); 进入该行中的任何函数调用
(gdb)  step

       

  • 显示有关GDB命令名称的信息,或有关使用GDB的常规信息
(gdb) help [name]

     

  • 退出GDB
 (gdb)  quit

       有关GDB的完整详细信息,请参阅Richard M. Stallman和Roland H. Pesch撰写的《使用GDB:GNU源代码级调试器指南》。 
       可以在线获取与“ info”程序中“ gdb”条目相同的文本。

选项


       选项以外的任何参数都指定可执行文件和核心文件(或进程ID);

       也就是说,遇到的第一个参数没有关联的选项标志时,它等效于-se选项,第二个参数(如果有)等效于-c选项(如果它是文件名)。 许多选择都有长短形式。 两者都显示在这里。 如果您截断了长格式,则只要它们足够明确,就可以识别它们。 (如果愿意,可以用+而不是-标记选项参数,尽管我们说明了更常用的约定。)

       您提供的所有选项和命令行参数均按顺序处理。 使用-x选项时,顺序会有所不同。     

 -help
 -h  列出所有选项,并简要说明。

 -symbols=file
 -s file     从文件文件中读取符号表。

 -write      允许写入可执行文件和核心文件。

 -exec=file
 -e file     使用文件文件作为可执行文件在适当时执行,并与核心转储一起检查纯数据。

 -se=file    从文件文件中读取符号表,并将其用作可执行文件。

 -core=file
 -c file     使用文件文件作为核心转储进行检查.

 -command=file
 -x file     从文件file执行GDB命令。

 -ex command    执行给定的GDB命令。

 -directory=directory
 -d directory   将目录添加到路径中以搜索源文件。

 -nh     不要执行~/.gdbinit文件命令。

 -nx
 -n      不要执行任何.gdbinit初始化文件中的命令。

 -quiet
 -q  "Quiet". 不要打印介绍性和版权信息。 这些消息在批处理模式下也被禁止
 

 -batch    以批处理模式运行。 处理完-x(和.gdbinit,如果未禁止)指定的所有命令文件后,以状态0退 
           出。 如果在执行命令文件中的GDB命令时发生错误,则以非零状态退出。

           批处理模式对于将GDB用作过滤器可能很有用,例如在另一台计算机上下载并运行程序。 为了使 
           其更有用,消息程序正常退出。

           (通常在GDB控制下运行的程序终止时发出) 在批处理模式下运行时不会发出。

 -cd=directory 使用directory作为其工作目录而不是当前目录运行GDB。

 -fullname
 -f      Emacs在将GDB作为子进程运行时设置此选项。 它告诉GDB每次显示堆栈帧时(包括程序每次停止)            
         以标准的,可识别的方式输出完整的文件名和行号。 
         这种可识别的格式看起来像两个\032字符,然后是文件名,行号和字符位置(以冒号分隔)和换行 
         符。 Emacs到GDB的接口程序使用两个\ 032字符作为信号来显示框架的源代码。

 -b bps  设置GDB用于远程调试的任何串行接口的线速度(波特率或每秒比特数).

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

     

参看
       GDB的完整文档保留为Texinfo手册。 如果在您的站点上正确安装了“ info”和“ gdb”程序以及GDB的Texinfo文档,则该命令

# info gdb
# man gdb

       应该让您访问完整的手册.


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值