Day 10-11 GDB 调试器:让程序“开口说话“,告诉你它到底哪里疼

Day 10-11 GDB 调试器:让程序“开口说话“,告诉你它到底哪里疼
写代码只占 20% 的时间,剩下 80% 都在调试。今天就把这 80% 的效率拉满。前言如果你顺利完成了 Day 8-9 的练习,现在应该能熟练地用gcc把代码变成可执行文件了。但现实很残酷——99% 的程序第一次运行都不会是你想要的结果。可能是直接Segmentation fault (core dumped)崩掉,可能是计算结果莫名其妙多了一个 0,也可能是大型项目里根本不知道代码执行到了哪一步。如果你还在用printf("here1")、printf("here2")这种方式来猜程序在干嘛,那说明你还在"石器时代"。今天,我们请出 C/C++ 开发者最强大的伙伴——GDB(GNU Debugger,GNU 调试器)。通俗类比:GDB 就是程序的"监控摄像头 + 慢放遥控器"。你能随时暂停、逐帧回放、甚至掏出 X 光机透视程序内部。第一部分:准备"靶子"——一个专门用来 Debug 的破烂程序为了演示 GDB 的各种功能,我精心(故意)写了一个带有多处 bug 的 C 程序buggy.c。它的功能很简单:计算一个整数数组的平均值,然后把数组里的每个元素除以平均值。