GDB简介--启动和退出


启动GDB

//直接使用GDB调试程序
gdb a.out

//加载core文件进行调试
gdb a.out core

//指定PID进行调试
gdb a.out $pid

gdb -p $pid 使用-p参数可以省略程序文件名

//不显示gdb简介
gdb  --silent  / gdb -q ( -- quiet)
//显示帮助
gdb -h (-help)

选择文件启动
-symbols file
-s file 从 file获取符号表

-exec file
-e file   使用file作为可执行文件,结合core文件分析数据

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

-core file
-c file    使用file作为用于检查的core dump文件

-pid number
-p number  指定进程号

-command file
-x file    执行文件文件中的命令,和直接输入原命令效果相同

-directory directory
-d directory    指定文件夹用于搜索源文件或者脚本文件

选择GDB启动模式
GDB有多种可选启动模式,例如:批处理模式,安静模式等

-nx
-n  不执行任何从初始化文件中找到的命令,按照先后顺序,共有3种初始化文件在GDB 初始化的时候会依次加载
  ‘system.gdbinit’
    这个整个系统的初始化文件,具体位置由T --with-system-gdbinit 参数指定,这个文件在GDB启动阶段,执行命令行选项之前首个加载的文件。
  ‘~/.gdbinit’
     这个是你home目录下的初始化文件,在‘system.gdbinit’之后,命令行选项执行之前加载
  ‘./.gdbinit’
     这个是当前目录下的初始化文件,它最后加载,在除了 -x -ex命令执行之后加载, -x -ex 选择最后执行,在/.gdbinit’ 加载完成之后

-nh   ‘不执行‘~/.gdbinit’初始化文件中的命令

-quiet
-silent
-q    这些选择用于屏蔽GDB的简介以及版权等信息

-batch  批处理模式,当执行完使用-x命令指定的文件中的命令后,返回0
-batch-silent 不显示版权信息的批处理模式

-cd directory
    指定gdb的工作目录
–args
    更改命令行的解释,以便将可执行文件后面的参数作为命令行参数传递给下级。

GDB的启动过程

(1) 按照指定的命令设置命令解释器;

(2) 如果创建GDB会话时, 使用–with-system-gdbinit 选项,则读取系统初始化文件‘system.gdbinit’,然后执行那个文件中所有的名利

(3) 读取home目录下的初始化文件‘~/.gdbinit’,执行其中的所有命令;

(4)顺序执行’-ix’, '-iex’参数指定文件和命令,使用这种方式,可能在GDB初始化文件执行之前,应用我们的配置

(5) 执行命令行参数和操作

(6)如果‘set auto-load local-gdbinit’ 这个选项开启,则读取当前目录下的初始化文件‘./.gdbinit’。只有当前目录和home目录不一致时,这一步骤才会执行。

(7) 如果命令行指定了可执行程序文件、或某个进程ID、core文件等,GDB会自动加载程序对应的脚本或者对应的共享库.如果想禁用自动加载功能,可以*$ gdb -iex “set auto-load python-scripts off” myprogram*

(8) 执行以 ‘-x’或者‘-ex’指定的命令或者命令文件

(9) 从历史文件中读取命令的历史纪录

退出GDB

quit [expression]
q
Ctrl + d
detach //用于释放attach的进程或者设备

Shell 命令

在GDB调试模式下,可以使用Shell命令,命令的格式:
shell command-string
!command-string
     启动标准shell执行command-string。需要注意的是‘!’ 和‘command-string‘之间没有空格,

GDB模式下,还可以使用管道操作,将一个命令的执行结果传递给其他命令作为输入
     pipe [command] | shell_command
     | [command] | shell_command
     pipe -d delim command delim shell_command
     | -d delim command delim shell_command

Log输出

GDB还支持Log输出,相关的命令如下:

set logging on
    开启日志功能
set logging off
    关闭日志功能
set logging file file
    改变GDB log的名称,默认为 ‘gdb.txt’.
set logging overwrite [on|off]
    是否覆盖原有内容,默认追加到文件尾
set logging redirect [on|off]
    是否开启输出重定向,默认输出到终端和Log文件,如果开启,则只输出到文件
set logging debugredirect [on|off]
    是否开启debug输出重定向,默认输出到终端和Log文件,如果开启,则只输出到文件.
show logging
    显示当前日志的相关设置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值