gdb是linux下动态调试的工具,常见的动态调试工具主要有以下几个内容,我将结合gdb的命令进行介绍
1、启动
start
2、断点
b *地址
b 符号名 break <function> 在函数体入口处下断点。
3、单步
si: step in
源码单步:next
4、查看内存
x/[]i 对指定数量的指令进行反汇编
x/[]x 显示指定长度的数据 $rax
x/[]s以字符串形式显示数据
x/10w $esp
相当于显示栈上40B的数据,即栈上10个空间的数据
除了以上常见的四点外,gdb的常见命令还有
- set命令,常见的是set architecture,设置使用intel还是AT&T语法,更多可使用help set查看
- bt (backtrace):打印出回溯的所有栈
- disas反汇编命令,直接disas是反汇编当前函数
- disas /r (显示汇编指令对应十六进制值)
- disas /m (如果有源码,显示对应行源码)
- help命令,以上的命令都可以查到相关说明
相关插件
peda:https://github.com/longld/peda
libheap:https://github.com/cloudburst/libheap
以上只是一下gdb常见命令,更多可用help命令去查看,目前只想到这些,以后在补充