参考资料

找一份好的资料,以下文档比较权威,可以借助翻译软件。

gdb 官方文档

为什么需要调试

  1. 代码人为编写,编译器只保证代码语法正确,运行结果无法保证。
  2. 出现未考虑到的场景,程序运行结果不正确时需要调试。
  3. 对于已运行的程序,可以动态调试,对于修复问题大有好外。
  4. 大型项目逻辑复杂,全靠人的逻辑是不太可能做到的。

调试器的好处

  1. 快速修复bug.
  2. 理清程序运行流程。
  3. 深入理解程序执行过程及细节。

开始使用调试器

视频演示

#sudo apt install gdb
#gdb -v –> 查看gdb 版本,如果没有gdb 程序,需要安装

仿真调试程序
#gdb program //program 目标程序
gdb# run // 运行程序
当程序crash时,可以用gdb 分析程序崩溃场景
检查系统是否支持coredump 功能
ulimit -c // 返回0,表示未打开coredump功能
ulimit -c unlimited // 对coredump文件大小不限制,当前终端有效,如果要长期有效,在/etc/profile 文件中增加 ulimit -S -c unlimited > /dev/null 2>&1
ulimit -c 10 // coredump 文件大小限制10个块(512byte)
cat /proc/sys/kernel/core_pattern 查看coredump文件位置
#gdb program core.dump

调试已运行的程序
#gdb program pid //直接给进程ID
#gdb program –pid 1222 //进程号
#gdb
gdb# file program //加载程序符号
gdb# attach pid //pid 为进程序进程编号
#gdb program -tui // 带界面的GDB