[oeasy]python0008-调试程序_debug

调试程序 🥊
回忆上次内容
py
的程序是按照顺序执行的是一行行挨排解释执行的
程序并不是数量越多越好
kpi也在不断演化

写的代码越多
出现的bug就越多
什么是bug
如何找bug呢?
尝试调试
那如何调试呢?🤔
首先要有这个guido.py
然后放到网上系统的剪贴板上

尝试调试
粘贴到vim中

原来是一把执行
现在可以一步一步调试运行
pdb3 guido.py
使用
pdb
来进行调试pdb
的意思是p
ython'sd
eb
ugger🤖为什么要逐步运行呢?
逐步运行
由于程序不知道哪里出的问题
所以一步步来执行

一步步调试运行的目的是去除
bug
也就是
debug
可是为什么把程序错误叫做
bug
🪰 呢?
help
不知道怎么办的时候
就要求助(help)

他给了我很多的命令
还说可以help 一下具体 topic
查看你哪个topic呢?
具体帮助
查看帮助的帮助

没有参数的话
显示所有命令
有一个参数
显示这个参数的帮助
h(elp) 的缩写是 h
elp可以省略

这并不难 h h
再看看其他单词
list
l(ist)
可以列出上下文11行的程序
缩写是l

当前行前面有个箭头 ->
使用命令

确实可以看到上下文
->代表着当前运行到了哪里
怎么往下走呢?
next
n(ext)
可以往前走一句
缩写是n

试一下

把1982年输出了
然后当前行来到了1995年
如何判断1995年在整个程序中的位置呢?
执行
l(ist)
可以列出当前行的上下文

在第2行
next就会到第3行
当然也可以一路next下去
一路next

我们一路next
完成调试
一路
next
下去python 解释器
就是这么一步步地解释执行的

确实是顺序执行的
一行行挨排儿执行的
我们就一步步地把bug找出来
就像找凶手一样!
最真实的解谜游戏
debug是我见过最真实的解谜游戏了
比什么剧本杀好玩多了
一步步地分析
找不到罪魁祸首的时候

需要冷静地分析
找到罪魁祸首的时候
那种快乐太真实了!!!!
终于来到最后一行
如果到这里再next
会发生什么呢?
最后一步
执行完最后一句之后
就会返回(return)到python
然后返回(return)到shell

如果这个时候已经到了程序的尽头
再next会发生什么呢?
绕圈
到头了就又重来
就会重新执行这个文件
就圜道了

可是这个和虫子(bug)有什么关系呢?
第一个错误 bug

历史上第一个程序错误是
这只虫子
bug
🪰飞进继电器(relay)计算机(computer)里面来
导致当时的继电器短路
所以后来
管错误叫做bug
管调试程序错误叫做
debug
总结
py
文件的程序是按照顺序一行行挨排解释执行的
我们可以
pdb3 hello.py
来对程序调试顺序执行
程序在文本中从上到下是一行行写的
解释器是从上到下是一行行解释的
调试也是从头到尾一行行执行的

但是这一行行的是在有点慢啊
毕竟我们都是经历过万行代码的人了
那得按10000次的n才能执行完啊?
有快点的方法吗?🤔
我们下次再说!👋
蓝桥->https://www.lanqiao.cn/teacher/workbench/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython