GDB一般用法
之所以要记录一下GDB,是因为GDB对于程序的调试太重要了。
一般的用法直接掌握就行。
用法
gdb调试gdb yourappp打断点
b 函数名或者 *指定地址执行
r代表程序运行n代表 单步步过s代表 单步步入查看地址内容
x/<n/f/u> <addr><n>为正整数,表示需要显示内存单元的个数,即是从当前地址向后显示n个内存单元的内容一个内存单元的大小由第三个参数u定义
<f>代表addr指向内存内容的输出格式,s对应字符串,但需要注意整型数据的格式x按十六进制格式显示变量.d按十进制格式显示变量。u按十进制格式显示无符号整型。o按八进制格式显示变量。t按二进制格式显示变量。a按十六进制格式显示变量。c按字符格式显示变量。f按浮点数格式显示变量。<u>:就是指以多少个字节作为一个内存单元-unit,默认为4。u还可以用被一些字符表示:如b=1 byte, h=2 bytes,w=4 bytes,g=8 bytes.
<addr>:表示内存地址。
例如
调试一个加密函数

由于数据在程序执行过程中已经计算好了,就可以进行调试读取就行了
输入
gdb app
打断点
b decrypt执行
rn查看地址内容(数据在
eax)查看数据
x/200wd $eax字符串查看
x/sw $eax
