拓展02
如何Debug

在计算机中 ,我们将机器看作状态机,同时我们遵循计算机不会犯错的原则,因此,当你设计的程序产生了与你意料相悖的结果,那就可以认为你的程序产生了bug。
计算机永远是对的
1.调试困难的根本原因
因为bug的产生过程我们不得而知,我们仅仅只能知晓一个输出的结果
在现在软件中,bug可以分为如下的两类
理解需求的不同产生的bug:我们在设计程序时偏离了最初规划的功能,导致最后设计出的程序没有办法完好的满足用户需求,这就属于第一类bug。
具体实现中的bug:因为技术原因,在实现过程中,我们实现的程序不能很好地完成为其设定的任务,究其根本是我们为这个任务设定的数学模型存在纰漏,这就属于第二类bug。
这里以我们的OJ举例,完成OJ上任务的基本步骤就是读懂题面,了解你要实现什么样的程序,接着写出相对应的程序,也就是在数学上实现这个问题的解,第一步对于我们而言都比较简单,而第二步,也是我们最容易犯,最需要注意,最需要debug的部分。
2.看懂报错信息
解释器和python版本不对应也可能产生bug
报错信息在一行解释器都会告诉你(只能解决一些简单的bug)
3.利用print()解决一些简单的bug
可以打印所需的数据,看看输出的数据和你预想中的数据处理方式是不是一样来层层debug
4.assert()方法
断言,可以在数据条件不满足表达式时输出AssertionError,强行停止用于检测数据范围

5.利用IDE进行debug
vscode中可以新建个json文件进行调试

其中,request是一个特别重要的参数(有launch和attach 等)
launch是用vscode进行一个独立的debug过程
program则是程序的执行路径
console是执行的终端(这里是默认vs的终端)
断点调试

左边这里打上红点了就代表断点上成功了
每运行到一个断点就会暂停一次

这些是调试的工具栏
第一个是继续运行直到下一个断点
第二个是只执行一行
第三个是单步调试(可以进函数内部进行调试)
第四个是单步跳出,用于跳出函数
第五个是重启代码(重新运行)
第六个是停止程序
6.AI调试
可以用vscode的Bito AI Code Assistant的AI插件进行debug

返回的错误不是很了解或者一些逻辑错误可以利用它查找