GDB常用命令
来源:互联网 发布:美食文案 知乎 编辑:程序博客网 时间:2024/06/06 00:27
GDB默认跟随父进程,可通过如下跟随子进程
set follow-fork-mode child/parent
set detach-on-fork [on|off]
on: 断开调试follow-fork-mode指定的进程,默认。
off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态。可通过inferior恢复暂停,先设断点。
查看当前所有的进程
info inferiors
切换进程
inferior (info inferiors返回的值)
info stack
frame
可查看当前调试到哪一行
core dump查看
ulimit -c unlimited
gdb 可执行文件 core文件
调用函数
call fun()
GDB TUI相关
进入wh
wh
改变方向箭作用窗口
focus src
focus cmd
退出
ctr+x+a
gdb program
gdb program core
gdb program pid
退出gdb,ctrl+d
shell command
或
shell
exit
列出以args为前缀的命令
complete args
列出与word相关的命令详细说明
apropos word
info: 用来获取和被调试应用程序相关的信息
show: 用来获取GDB本身设置相关一些信息
只停止一次的断点,停止后删除断点
tbreak
条件断点
break ... if cond
break function
break +offset 向前
break -offset 向后
break linenum
break *address
清除断点
clear
clear function
clear linenum
enable once [range...]
enable delete [range...]
disable [range...]
ignore 断点 次数
条件断点
condition bnum expression
取消第bnum条件
condition bnum
断点停止后,执行命令
break fun
commands
要执行的命令
end
commands 断点索引
要执行的命令
end
watchpoint
watch expr 写时,停止
rwatch expr 读时,停止
awatch expr 读写时,停止
catchpoint 发生事件停止
catch throw
attach pid 调用正在运行的程序
detach pid 停止调试
kill 杀掉当前调试进程
多线程
info threads
thread threadno 切换线程
设置是否锁定其它线程
set scheduler-locking on/off/step
中止当前函数调用
return [expression]
当前GDB的信号处理
info signals
handle signal action
signal: SIGALRM
action: stop nostop print noprint pass nopass ignore noignore
栈相关
up n :当前为0,向上第N帧
down n :向下第N帧
frame n: 跳到第n帧
查看当前帧局部变量
info locals
查看当前帧的参数
info args
含有域时,强制类型转换需要加''
p *('Test::A' *)pObj2
设置传给应用的参数, 避免每次重复输入
set args
获取传给应用的参数
show args
p为print简写
若想调用printf ,不能单独写p
printf "pid(%d)", 1
continue 忽略次数
查看内存
x/nfu addr
n: 数目
f: 打印格式 s(C风格字符串,即每行以\0结尾) x(十六进制) i(机器指令) 其它printf支持的格式
u: 打印单元的大小。b(byte) h(halfword 2 bytes) w(word 4 bytes) g(giantwords 8 bytes)
每次执行调试,自动打印
display 变量
undisplay 索引
set print elements 数目 显示元素的数目,默认为200,设为0,表示不限制
set print null-stop 打印字符数组时,遇到NULL停止
set print [filed] on/off 打开/关闭相应的属性
无需要输入shell,可直接用的命令
make
cd
pwd
设环境变量
set environment USER=zyq
设运行路径
path <dir>
重定义输入与输出
tty /dev/pts/存在的伪终端号
r > outfile
调试正在运行的程序
gdb <program> PID
gdb <program> 关联上源代码
attach PID
查看调试程序是否运行,进程号,被暂停的原因
info program(非程序名,就是当前英文)
清除当前行的断点
clear
对指定的线程设断点
b line thread 线程号
设置显示的行数
set listsize 行数
查找源代码
search 正则表达式
forward-search 正则表达式
reverse-search 正则表达式
按回车查找下一个
查看前面代码
list -
设置查找源代码的路径,以":"分隔
dir 绝对路径
加单引号
p 'f.c'::x
显示格式
按字符格式显示
p/c i
按二进制格式显示
p/t i
设置显示结构体时,是否显示其内的联合体数据
set print union on
设置变量,无类型
set $val=value
显示当前变量
show convenience
改变程序变量的值
p 变量=值
改变程序运行顺序
jump line
跳转后如果没设断点,相当于跳转后,continue
给调试的程序产生信号,与通过shell产生的信号不同
signal <signal名或值>
自定义命令
define commandname
....
end
命令行参数,最多10个,$arg0 $arg1 $arg2
命令里可用的语句
if cond-expr
...
else
...
end
while cond-expr
...
else
...
end
定义命令文档信息
document commandname
...
end
查看自定义命令的如何定义
show user commandname
查看自定义的所有命令
help user-defined
- gdb常用命令
- gdb常用命令
- gdb常用命令
- GDB常用命令
- gdb常用命令
- gdb常用命令
- GDB常用命令
- gdb常用命令
- GDB 常用命令
- gdb常用命令
- gdb 常用命令
- gdb 常用命令
- GDB常用命令
- gdb常用命令
- gdb常用命令
- GDB常用命令
- gdb常用命令
- gdb常用命令
- HDU 1.1.2 A+B for Input-Output Practice (II)
- ehcache
- 关于maven的配置文件pom.xml中<classifier>jdk15</classifier>在gradle中的表达问题
- ASIHttprequest NSMutableURLRequest post请求的方便之处
- 第十一周项目二 求最大公约数
- GDB常用命令
- 最值得学习阅读的10个C语言开源项目代码
- Android平台体系结构中的虚拟机Dalvik与JAVA中的虚拟机有什么不同
- iPad : 使用UIPopoverController弹窗支持拍照效果
- JavaScript prototype背后的工作原理
- HDU 1.1.3 A+B for Input-Output Practice (III)
- 第十一周项目二——输出四个数的最大公约数
- 递归和非递归实现单链表的转置。
- 【Box2D】刚体的作用ApplyForce、ApplyImpulse、SetLinearVelocity