本文共 1393 字,大约阅读时间需要 4 分钟。
GDB(GNU symbolic debugger)是 GNU Project 调试器,它使你可以查看另一个程序在“执行”期间正在执行的操作–或该程序崩溃时正在执行的操作暨①调试可执行程序②调试Coredump文件。
GDB 可以做四种主要的事情(以及支持这些事情的其他事情)来帮助你捕获行为中的错误:
启动你的程序,并指定可能影响其行为的所有内容。
使程序在指定条件下停止。 检查程序停止时发生的情况。 更改程序中的内容,以便你可以尝试纠正一个错误的影响,然后继续学习另一个错误。使用“GDB”调试器的前提是调试对象是“调试版本(debug)”的二进制程序,在Linux下gcc/g++编译出来的二进制程序默认是“发布版本(release)”,因此在源代码编译时需要加上“-g”选项,我们以求斐波那契数的程序为例:
gdb <二进制文件名>: 开始调试
断点设置:
① break / b <行号> : 在某一行设置断点; ② break / b <函数名> :在该函数开头设置断点; ③ info break / i b :查看断点信息; ④ delete <断点序号> : 删除断点; ⑤ disable <断点序号> : 使该断点失效; ⑥ enable <断点序号> : 使该断点生效。next / n : 逐过程执行,这相当于VS里面的F10;
step / s : 逐语句执行,相当于VS里面的F11; print / p <变量名/表达式> : 打印变量或表达式的值 continue / c : 从当前位置开始连续而非单步执行; 我们删除上面的所有断点,然后重新设置断点然后执行程序。举一个简单的例子:
在这里给空指针赋值,肯定会报错。
再次执行该文件:
转载地址:http://vjzaz.baihongyu.com/