Getting In and Out fo GDB

输入GDB命令启动GDB
输入quit 或 Ctl-d  结束GDB

2.1调用GDB
gdb program
gdb program core
gdb program 1234 等同attach 1234
gdb -silent 不打印GDB的版本信息
gdb -help

2.1.1选择文件
假如你的程序是数字开头的,你可以加上路径避免和attach 1234这种效果的命令的冲突 eg ./1234
gdb支持完整命令模式和简写命令模式,完整的命令给模式一般以–开始,简写的命令一般是-开始,–完整命令模式一般也可以简写,只要和其他命令不产生二义性就行。
-directory directory
-d directory 增加查找源,目标文件的目录

2.1.2 选择模式
-nx
-n 不要执行在initialization 文件里边的命令 ,有三个初始化的文件,加载顺序如下:
system.gdbinit 由这个-with-system-gdbinit配置命令指定。在GDB启动,命令行选项被传递之前加载
~/.gdbinit 在system.gdbinit 加载后加载,在命令行选项被传递之前
./.gdbinit 在命令行选项被传递之后加载(-x,-ex的命令行在这个脚本之后处理)

-quiet
-slient GDB 在启动时候不要打印版本和介绍信息
-batch 批处理模式。执行所有在command文件里边 -x指定的命令。假如在执行过程中有一个命令发生错误返
回非0值。通常 program exited normally 这个提示不显示

-batch-silent 像batch mode,但是阻止GDBstdout, stderr 不受影响
-return-child-result GDB的返回码是被调试进程的返回码。以下几种情况除外:GDB异常终止 GDB带明显的
放回值 被调试进程木有跑或者是不允许跑
-nowindows
-nw 不使用窗口界面

-windows
-w 使用窗口界面
–args 改变解释器多命令行的解释。阻止选项处理
-write 打开可执行文件和core文件的读写权限。 等价于: set write on
-statistics 打印每条命令执行完后的时间的内存使用情况
-version 版本信息

2.1.3 GDB在启动期间做的事情
1.启动命令行指定的命令解释器
2.读 system-wide init file ,执行里边的所有命令
3.读你家目录里边的初始化文件,执行里边的所有命令
4.执行 -iex -ix选项指定文件里边的命令。
5.处理命令行和操作数
6.读和执行当前目录里边的命令行的文件以及里边的命令。只有当前目录不是你家目录的时候才会被执行
7.自动加载命令行指定的待调试程序,core文件目录里边的脚本。如果要禁止这种行为:
gdb -iex “set auto-load python-script off” mygrogram
8.执行 -ex -x 选项分隔的命令 命令行文件。
9.读历史文件里边的历史记录

2.2 退出GDB
quit [expression]
q 假如木有expression GDB 自然的结束了,如果有expression,用expression 作为返回值。

说明:Ctrl+c 终止被调试的进程,但是不终止GDB

2.3 Shell 命令:
在调试过程中,可以用如下格式执行SHELL脚本:
shell command-string
!command-string !和commangd_tring之间木有空格 有空格 SHELL环境变量决定有什么SHELL,木有空格GDB使用默认的shell执行

make make-args:执行make命令用给定的参数。等价于:shell make make-args

2.4 退出:
set logging on Enable logging
set logging off Disable logging
set logging file file 改变当前登录的logfile ,默认的logfile是gdb.txt
set logging overwrite[on | off] 默认方式是追加
set logging redirect [on | off] 默认GDB的输出将要是终端和logfile ,set redirect 以后只输出到logfile
show logging 显示当前值 logging settigs

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据