AI
推荐
模板社区
专题
登录
免费注册
首页
思维导图
详情
gdb一图够
2022-02-28 14:04:13
0
举报
分享方式
使用 (¥5)
AI智能生成
gdb最重要的指令用法总结。
GDB
调试
C语言
linux
模版推荐
作者其他创作
大纲/内容
断点
匿名空间断点
break(b) (anonymous namespace)::func
指令地址断点
b *0x400522
文件行号断点
b file:N
断点配置保存/加载文件
save breakpoints file-name-to-save
source file-name-to-save
一次性断点
tbreak(tb)
条件断点
b XXX if i==101
忽略x号断点N次
ignore x N
观察点
设置观察点
watch(wa) a
watch *(data type*)address
查看观察点
info watchpoints
针对某线程的观察点
i thread 找到线程序号,如2
wa a thread 2
读观察点
rwatch(rw) a:a被读时断点
awatch(aw) a:a被读写都会断点
catchpoint事件跟踪
catch evt:当事件evt发生的时候,程序停止运行
exec/fork/vfork: 被调用
动态库
load: 加载动态库
load libname: 加载名为libname的动态库
unload: 卸载动态库
unload libname: 卸载名为libname的动态库
异常
throw: C++异常
catch: C++捕捉到异常
系统调用被调用
syscall [args]: 调用系统调用,args可以指定系统调用号,或者名称
一次性catchpoint
tcatch evt
函数
列出函数名
info functions: 所有函数
info functions reg*: 符合正则的函数
进入函数
step(s), 进入带调试信息的函数
set step-mode on; s: 进入不带调试信息的函数,如printf
退出函数
finish: 运行到函数结束
return exp: 直接return某个value,剩余代码不会被执行
手工执行函数
call
print
栈帧信息
info(i) frame:栈基地址等
disassemble(disas) func:汇编代码
寄存器
i registers eax
i registers: 所有寄存器
p $eax
选择栈帧
bt; frame(f) N:从bt看栈帧层次号,直接选择
f addr:直接跳到指定地址的栈帧
向上/下切换栈帧
up N
down N
打印
数组中连续元素
p array[60]@10:array 数组第60~69个元素的值
局部变量
bt full [n]:各个函数的局部变量, 若有n则打印到n层为止
i locals:当前函数的局部变量
进程内存映射信息(内存段起止地址)
i proc mappings
i files
静态变量
p 'static-1.c'::var:指定文件中的静态变量
变量类型
whatis a
ptype a
内存值
打印: x/nfu addr
n:输出单元的个数
f:是输出格式
x: 16进制
o: 8进制
u: 无符号10进制
d: 10进制
t: 2进制
c: 字符
s: 字符串
u:标明一个单元的长度
b: 1byte
h: 2byte
w: 4byte
g: 8byte
搜索: find
find[/un] start_addr, +len, val1 [, val2, …]
find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
find[/un] start_addr, end_addr, val1 [, val2, …]
find 0x804c000, 0x806d000, "hellogdb"
派生类型对象
set print object on
代码和汇编指令关联
disas /m fun
查看某一行代码的汇编指令
i line 13:得到指令的起止地址
disas [start], [End]
共享链接库信息
i sharedlibrary [reg*]
源码路径设置
directory(dir) PATH
set substitute-path /home/old /home/new 修改目录路径
改变程序执行
修改变量值
set main::p1="Jil" 修改字符串
set var i = 8 修改变量i
set {int}0x8047a54 = 8 通过地址修改
set var $eax = 8 修改寄存器值,eax存储返回值
修改执行顺序
set var $pc=0x08050949 直接修改PC寄存器指定下一条指令
jump(j) 15 跳转到第15行
收藏
立即使用
gdb一图够
收藏
立即使用
linux性能分析
化肥陈
职业:硕士研究生
去主页
Collect
Get Started
一诺仪表
Collect
Get Started
一瓶一码
Collect
Get Started
迭代一循环网络图
Collect
Get Started
科目一新-全
评论
0
条评论
下一页
图形选择
思维导图
主题
补充说明
AI生成
修改AI描述
去编辑
重新生成
提示
关闭后当前内容将不会保存,是否继续?
取消
确定
Document