编程过程中出现bug如何应对?
1.找错误原因
- 如果完全不知道出错的原因,或者说存在着很多错误的有原因,----》控制变量法
例如,昨天我在使用torchrun 多卡并行一个程序的时候,出现了大量的bug, 于是我将报错信息放在网上搜索,网上给出的答案无法帮助我解决问题。因为虽然别人得到的报错消息和我的是一致的,但是别人报错的原因和我的原因可能是不一致的。
于是今天早上我来到了实验室之后,便想到仅使用单卡运行一下试一下,看能否跑通,结果运行成功了。
由此表明,程序运行错误完全是因为多卡并行的问题。于是,错误的原因就被我们定位了。
- 如果知道错误的原因,就可以进行debug, 包括单步调试,或者打印出来看等等。
后记: 如果实在到了晚上还找不到错误原因,果断放弃,回去睡觉,说不定第二天早上就能够找到原因解决问题了。
之所以晚上一直不想回去想继续debug的一个原因是担心明天也想不出来。但是真相是:明天上午想不出来的事情,今天晚上肯定也是想不出来的。。所以好好照顾自己,回去睡觉。