个人笔记:
1. 要想使用gdb调试程序,必须在编译的时候加入调试信息,用-g命令,比如 gcc -g -o hello.exe hello.c
2. 使用gdb 可以执行文件名打开调试文件
3. 使用list查看源代码(list默认显示10行,在gdb下回车默认执行上一个操作,所以查看源码需要多按几个回车)
4. 使用run可以将程序运行,kill可以终止运行程序
5. 使用 break 行号,可以在那一行上面加断点
6. 使用watch 变量名可以监视变量 (自动显示的,每次你监视的变量的值有变动的时候,就会自动打印变动前后的值)
7. 使用c命令使程序继续运行至断点处
8. 使用next命令执行一行源码但是不进入函数内部
9. 使用step命令执行一行源码并进入函数内部
10.使用quit命令退出当前调试的程序
11.使用print可以打印变量,还可以打印数组,如print *a@b,打印数组a的前b个变量
12.回车操作可以执行上一个命令
13.info b查看断点信息
13.delete 编号删除断点信息
以下为反汇编时即不加调试信息时常用的命令
14.disass 函数名 查看函数的反汇编
15.set disassembly-flavor intel 将AT汇编转为Intel汇编
16.更改寄存器 $eax = 4
17.查看寄存器 p $eax
18.打印堆栈为 bt
19.查看内存为 x/20x 0xbffff430
20.打印堆栈里面字符串的内容 x/s 0xbffff5c9
21.set disassemble-next-line on 断点时查看行号
22.ni 在汇编中单步,不进入函数内部
23.si 在汇编中单步,要进入函数内部
24.p/x 变量 可以打印变量的十六进制形式
25.汇编断电是用b *地址 如b *0x0804875a