调试程序 🥊
回顾上次内容
-
py
的程序是依照程序执行的- 是一行行挨排解释执行的
- 程序并不是数量越多越好
- kpi 也在一直演变
-
写的代码越多
- 呈现的 bug 就越多
- 什么是 bug
- 如何找 bug 呢?
尝试调试
- 那 python 程序到底是怎么一步步解释执行的呢?🤔
print("1982------Guido in cwi")
print("1995------Guido in cnri")
print("2000------Guido in beopen")
print("2005------Guido in google")
print("2012------Guido in dropbox")
print("2020------Guido in microsoft")
- 首先要有这个 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/teache…
- github->https://github.com/overmind19…
- gitee->https://gitee.com/overmind198…
- 视频 ->https://www.bilibili.com/vide…