gdb一图够
2022-02-28 14:04:13 0 举报
AI智能生成
为你推荐
查看更多
gdb最重要的指令用法总结。
作者其他创作
大纲/内容
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
条件断点
ignore x N
忽略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被读写都会断点
读观察点
观察点
exec/fork/vfork: 被调用
load: 加载动态库
load libname: 加载名为libname的动态库
unload: 卸载动态库
unload libname: 卸载名为libname的动态库
动态库
throw: C++异常
catch: C++捕捉到异常
异常
syscall [args]: 调用系统调用,args可以指定系统调用号,或者名称
系统调用被调用
catch evt:当事件evt发生的时候,程序停止运行
tcatch evt
一次性catchpoint
catchpoint事件跟踪
info functions: 所有函数
info functions reg*: 符合正则的函数
列出函数名
set step-mode on; s: 进入不带调试信息的函数,如printf
进入函数
finish: 运行到函数结束
退出函数
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个元素的值
数组中连续元素
i locals:当前函数的局部变量
局部变量
i proc mappings
i files
进程内存映射信息(内存段起止地址)
p 'static-1.c'::var:指定文件中的静态变量
静态变量
whatis a
ptype a
变量类型
n:输出单元的个数
x: 16进制
o: 8进制
u: 无符号10进制
d: 10进制
t: 2进制
c: 字符
s: 字符串
f:是输出格式
b: 1byte
h: 2byte
w: 4byte
g: 8byte
u:标明一个单元的长度
打印: x/nfu addr
搜索: find
内存值
set print object on
派生类型对象
disas /m fun
i line 13:得到指令的起止地址
查看某一行代码的汇编指令
代码和汇编指令关联
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
0 条评论
回复 删除
下一页