首页 > 其他分享 >GDB调试指令

GDB调试指令

时间:2024-03-31 09:34:45浏览次数:23  
标签:set 变量 查看 地址 GDB 指令 格式 调试 字节

GDB

流程控制

命令功能 命令 简写
重新运行调试的程序 run r
继续运行 continue c
执行下一步 next n
执行N次下一步 next N n N
执行上次执行的命令 [Enter]
单步进入 step s
执行完当前函数返回到调用它的函数 finish f
指定程序直到退出当前循环体 until u
强制返回当前函数将会忽略当前函数还没有执行完毕的语句,强制返回。
return后面可以接一个表达式,表达式的返回值就是函数的返回值。
return
在当前的文件中某一行(假设为6)设定断点 break 6 b
类似于`run,停在main函数的开始 start

断点设置

  • break 函数名或者 * 0x地址

PIE保护下断点

b *$rebase(0x地址)

打印Print

命令功能 命令 简写
打印变量的值 print var
打印变量的地址 print &var
print /x var
print /x var中x的含义 print /x var中x的选择
按十六进制格式显示变量 x
按十进制格式显示变量 d
按十六进制格式显示无符号整型 u
按八进制格式显示变量 o
按二进制格式显示变量 t
按十六进制格式显示变量 a
按字符格式显示变量 c
按浮点数格式显示变量 f

内存显示

x /<n/f/u> |$esp

例如:x /10dw arr

n 显示的长度

f 表示显示的格式 f的选择
按十六进制格式显示变量 x
按十进制格式显示变量 d
按十六进制格式显示无符号整型 u
按八进制格式显示变量 o
按二进制格式显示变量 t
按十六进制格式显示变量 a
按字符格式显示变量 c
按浮点数格式显示变量 f
u 表示的字节方式 u的选择
表示单字节 b
表示双字节 h
表示四字节 w
表示八字节 g

其他

x/s addr 查看addr处的字符串
x/b addr 查看addr处的字符
x/i addr 查看addr处的反汇编结果
x/10wx
x/10gx

查看寄存器

  • i r [a]|[eax]

修改寄存器

  • set $eax=0x11

修改地址内容

无符号 修改字节数
set {unsigned char}地址 =值 一个字节
set {unsigned short}地址 =值 两个字节
set {unsigned int}地址 =值 四个字节
set {unsigned long long}地址 =值 八个字节
有符号 修改字节数
set {char}地址 =值 一个字节
set {short}地址 =值 两个字节
set {int}地址 =值 四个字节
set {long long}地址 =值 八个字节
  • 或者set (类型) =

调试技巧

方案一

启动程序之后,再用gdb调试
gdb attch
python中pause()进行中断

方案二

在python中gdb.attach(p,'command') 如:gdb.attach(p,'b *地址')

堆相关指令

查看分配的堆 heap [-h] [-v] [-s] [addr] (chunk头开始)
查看各种bins bins [addr]
16进制查看 hexdump 地址 显示的字节数
查看各个bins的情况 heapinfo (常用)
查看堆的基地址 heapbase
查看用户使用的堆的使用情况 parseheap (chunk头开始)(par简写)(常用)
查看chunks内存 vis_heap_chunks
查找fake_chunks find_fake_fast &main_arena

查看栈信息

含义 指令
打印当前函数参数和对应值 info args
打印当前函数局部变量和对应值 info locals
打印详细的栈信息,主要以程序的虚拟地址信息为主 info frame
向栈的下面移动n层 down [n]
向栈的上面移动n层 up [n]
打印当前调用栈的信息,n可正可负。
表示只打印栈顶上n层的栈信息或栈底n层信息。
backtrace [n]

其他指令

指令含义 指令 简写
显示当前gdb断点信息 info breakpoints info b
反汇编该函数或地址 disassemble 函数名或地址 disass
用栈的方式查看 telescope 地址 tele
查看区段 vmmap
搜索字符串 searchmem 字符串
查看子命令帮助 help x
转换为intel格式 set disassembly-flavor intel
转换为att格式 set disassembly-flavor att
查看符号地址 info address 符号
查看puts的got表地址 info address [email protected]
查看libc中system函数地址 info address system
查看内存映射 info proc mappings

标签:set,变量,查看,地址,GDB,指令,格式,调试,字节
From: https://www.cnblogs.com/noahze/p/18106387

相关文章

  • nukkit maven 项目调试插件
    首先添加配置选择添加jar应用然后填入配置信息最后当每次重新构建重构后,手动更新plugins下的插件,当你服务器的jar包与构建出来的jar包一致时即可在idea中给插件代码打断点。......
  • MogDB/OpenGauss数据库中通过参数控制抓取慢sql
    MogDB/OpenGauss数据库中通过参数控制抓取慢sql本文出处:https://www.modb.pro/db/221556mogdb数据库中可以通过打开相应的参数抓取慢sql,该参数为log_min_duratuion_statement。log_min_duration_statement参数说明:当某条语句的持续时间大于或者等于特定的毫秒数时,log_min......
  • MogDB学习笔记之 -- 了解pagewriter线程
    MogDB学习笔记之--了解pagewriter线程本文出处:https://www.modb.pro/db/183172在前面的MogDB学习系列中,我们了解了核心的bgwriter进程,今天继续来学习另外一个主要的线程,即pagewriter;首先来看下数据库相关的参数设置:postgres=#selectname,setting,category,context......
  • 在 Vivado 中执行远程调试
    在Vivado中执行远程调试远程调试需求可能在各种情况下出现。在产品原型设计阶段可能需要远程调试以便您在无法实地访问实验室的情况下对实验室中的设计进行调试,或者供您在组织内部共享资源。执行现场调试以诊断问题或者延长产品生命周期时也可能需要远程调试。......
  • 校验码-体系结构-指令-流水线
    校验码码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错。奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数......
  • MogDB/openGauss 坏块测试-对启动的影响-测试笔记1
    MogDB/openGauss坏块测试-对启动的影响-测试笔记1在UPDATE操作提交后,脏块落盘前kill掉mogdb数据库,然后对UPDATE修改的坏进行以下破坏操作,仍然能够启动数据库,数据未丢失。1、用旧数据文件替换,可以启动2、修改成错误的checksum,可以启动3、数据块修改成错误的lsn,可......
  • MogDB 安装解压错误:cannot run bzip2: No such file or directory
    MogDB安装解压错误:cannotrunbzip2:Nosuchfileordirectory本文出处:https://www.modb.pro/db/403662问题症状MogDB安装时,涉及两个步骤解压,第一步解压缩tar包:[root@enmotech~]#tar-xvfMogDB-2.1.1-CentOS-x86_64.tarupgrade_sql.tar.gzMogDB-2.1.1-CentOS-64bit......
  • MogDB 2.1.1 初始化参数概要说明
    MogDB2.1.1初始化参数概要说明本文出处:https://www.modb.pro/db/394787MogDB数据库安装完成后,官方文档提供了刷新参数的脚本,推荐执行脚本来进行初始化参数设置。本文在官方提供脚本的基础上添加了简单说明,方便新学习的同学能大概了解参数作用。CentOS7.7下标准安装MogDB......
  • MogDB备机处于standby need-repair(WAL)状态
    MogDB备机处于standbyneed-repair(WAL)状态本文出处:https://www.modb.pro/db/402820问题现象Mogdb主备环境,备机检查发现StandbyNeedrepair(WAL)故障。原因分析因网络故障、磁盘满等原因造成主备实例连接断开,主备日志不同步,导致数据库集群在启动时异常。处理分析通过......
  • MogDB/openGauss学习笔记-获取对象DDL
    MogDB/openGauss学习笔记-获取对象DDL本文出处:https://www.modb.pro/db/399230内置函数omm2=#\df*defListoffunctionsSchema|Name|Resultdatatype|......