gcc -g -o sum sum.c gdb ./sum 调试命令: file --> 指定调试文件
list/l --> 查看原代码(默认10行) list n --> 列出n附近的10行代码 run/r --> 运行
break/b --> 设置断点 如: b main b 10 info breakpoints/i b --> 查看所有的断点
delete breakpoints set variable 变量名=值 until/u 26 --> 跳到某行 finish --> 跳出函数(finish不能简写成f) quit/q --> 退出gdb display /i $pc 同时显示c代码和汇编代码 disassemble 函数名 查看指定函数的反汇编代码 1) 查看寄存器 info registers或者i r 查看寄存器的情况 info all-registers或者i r a 查看所有寄存器的情况 info registers eip或者p $eip 查看指定寄存器 2) 查看内存 (gdb) x /x 0x80040000 # 以16进制显示指定地址处的数据 (gdb) x /s 0x86468700 # 以字符串形式显示指定地址处的数据 (gdb) x /d 0x86468700 # 以十进制形式显示指定地址处的数据 (gdb) x /o 0x86468700 # 以八进制形式显示指定地址处的数据 (gdb) x /t 0x86468700 # 以二进制形式显示指定地址处的数据 (gdb) x /d $ebp-0x8 # 以十进制形式显示寄存器ebp中的值减去0x8后地址处的 数据 x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。 3) 修改寄存器的值 (gdb) set $v0 = 0x004000000 (gdb) set $epc = 0xbfc00000 4) 修改内存的值 (gdb) set {unsigned int}0x8048a51=0x0 2、objdump工具 objdump -xd sum.o objdump -xd sum 将.o目标文件或可执行文件进行反汇编 因篇幅问题不能全部显示,请点此查看更多更全内容