程序调试感悟

1.调试基本思路

我觉得调试的基本思路,就是要确立两个元素:

  • 可信点;
  • 可疑点;

我们一定要首先确定、或者假设一些部分是可信的,一些部分是可疑的。然后在这基础上去编程/笔算出,这种假设下可疑部分的每一步结果应该是怎样的,再用gdb去不断输出结果,和预想进行对比。
例如程序存在两个部分:

  • 矩阵乘法;
  • 找结果矩阵mc中每行最大值组成数组中的最小值;

我们如果要进行调试,一定要先确定/假设,某一个部分是正确的,错误出现在另一个部分,否则调试是无法进行的。

2.关于可信点

如果可信点都需要假设的话,这种情况下基本是绝境了。最后很可能会发展成这样的情况,可信点为0,整个模块从头到尾都是可疑点,从头到尾逐步调试。。。如果是串行的话还好,我有次调试一个找不到可信点的并行程序,我差点调到崩溃。
所以,种种原因下,可信点的确立基本是必须的。要确立可信点,主要需要采用两种方法:

  • 类似迭代开发式的编程方法;
  • 用心设计测试案例;

我那次优化矩阵乘法的经历,就存在着测试案例设计的太随便,最后由于浮点数的计算特点,我根本不能确定自己结果的正确,从而心态上崩盘,造成求援惨案。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值