GDB是GNU组织下的一个调试工具,可以调试C与C++程序。
一、其调试步骤如下:
步骤 | 指令 |
生成调试文件 | 用gcc指令的-g选项或-ggdb选项。例:gcc –g demo.c –o demo |
装载调试文件 | 示例 gdb demo.exe |
设置断点 | 指令:break 行号(或函数名) |
运行调试文件 | 指令:run |
跟踪调试 | 指令:step:进入函数内部 next:下一步结点 contiue:继续 print 变量名 查看变量值 list 行号 列出源代码 finish 从函数执行返回 x/x &var 以16进制方式查看变量 x/o &var 以8进制查看变量 x/d &var以10进制查看变量 x/2b &var 以字节方式查看变量,如查看变量前两个字节的值 x/s &var 以字符串方式查看变量值 x/db &var 以10进制的方式查看前1个字节,类同有:x/xb ,x/ob x/dw &var 以16字节的方式查看变量 print/x(d,o)以16进制、10、8进制显示寄存器值 |
三、常用gdb命令
指令 | 含义 |
file <文件名> | 加载文件用来调式 |
attach <进程ID> | 把当前运行的进程加载调试 |
run 【参数】 | 运行通过file加载的程序,可以加参数 |
info var | 查看程序所有的变量 |
info func | 查看程序所有的函数 |
main info sections | 显示该程序各个段地址 |
kill | 结束当前程序的调试 |
info break | 显示所有断点信息 |
delete break <断点号> | 删除指定的断点 |
enable break <断点号> | 允许断点 |
disable break <断点号> | 禁止断点 |
info float | 显示浮点寄存器的值 |
info signals | 显示程序可用的信号值 |
info address <符号名> | 显示函数名、变量名的地址 |
info stack | 跟踪栈信息 |
info thread | 显示当前线程id |
info source | 显示程序源文件 |
set var <变量名=值> | 给变量赋值.如:set var value=218 |
watch <变量名> | 观察某一变量的中断 |
pwd | 显示当前工作路径 |
shell <执行命令> | 在gdb中打开相关应用程序。如shell editplus |
x/3i $pc | 显示pc开始的3条指令 |
disass [开始行号,结束行号] | 反汇编指令 |
until <addr/line> | 运行到指定的行号或地址:until 12 |
set disassembly-flavor intel/att | 设定反汇编的输出为intel或att汇编语法 |
return | 立即取消函数的运行 |
评论