调试技巧
小黄鸭调试 在旁边摆上一个同学 让他帮你看看你的代码为何错了 跟他讲解你的代码 BUG神奇的被自己发现了 同学并没有派上用场 为了避免耗费人力物力请将同学替换为小黄鸭
小黄鸭调试
逐步调试 无脑,直观,逻辑性强,工作量大 使用各种IDE的基本差不多的DEBUG功能 Breakpoint, Run, Next, Step, Continue, WAtch Print, Display 通过调用GDB给用户呈现可视化程度高的界面
GDB
GDB
GDB List(l) 展示当前行上下的代码块。可通过set listsize条件块的大小,默认为10。 可通过list+, list-来查看当前代码块之后或之前的代码块。 Run(r) 运行。 Break(b) 设置断点。可用info break查看当前断点信息。通过delete或clear 来删除断点。 Next(n) 单句执行。 Step(s) 进入函数。 Continue(c) 运行至断点。 WAtch(wa) 添加条件断点。 Print(p) 展示变量值。 Display(disp) 每次操作之后都展示一次变量值。可用undisplay取消持续展 示。 Quit(q) 退出GDB。
输出调试 需要正确的设计,高效快速 请在DEBUG完成之后注释或删除该部分 输出过程中的重要变量 输出警告
输出变量
输出警告
分块调试 需要额外的正确代码,代码功能模块性较好,无脑,有效 将代码的某个部分替换为正确代码,根据替换后的正确性可判断出BUG的位 置,缩小查错区域
分块调试
对拍器 需要额外正确代码,需要额外数据生成代码 查错能力极强并一定程度上取决于数据生成代码 不断的生成不同的数据 分别运行两份代码 对比代码结果直至不同 保留数据以供进一步排错
对拍器