拓展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
返回的错误不是很了解或者一些逻辑错误可以利用它查找