show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
-
py
的程序是 按照顺序执行的- 是一行行 挨排解释执行的
- 程序并不是 代码量 越多越好
-
kpi也在 不断演化
- 写的代码Code 越多
- 可能 出现的bug 就越多
- 写的代码Code 越多
- 要写的是 可用的Code
- 而不是 不可用的Bug
- 那 什么是
bug
呢?
- bug 就是 程序错误
- 比如 NameError
- 我们要找到这些错误
- 然后再修复错误
- 这就是调试
- debug
- 想要 调试程序debug
- 首先 得
有
一个程序- 我们还是用 上次的这个
guido.py
- 我们还是用 上次的这个
- 首先 得
- 如果 上次运行的 guido.py 没有了
- 就复制 下面这个
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")
- 然后放到网上系统的剪贴板上
- 在shell中 键入
vi guido.py
- :reg
- 执行底行命令reg
- 观察寄存器register的状态
- 执行底行命令reg
- 系统寄存器
"*
、"+
中- 都存储着程序的源代码
-
回车
- 从底行命令模式
- 回到正常模式
- 从底行命令模式
-
在vim正常状态下键入"+
- 观察窗口底行
- 出现"*字样
- 强调 使用系统剪贴板寄存器
- "+
- 观察窗口底行
- 然后键入p
- paste 粘贴
- gg
- 将光标 回到第一行
- dd
- 删除当前行
- 键入:wq
- 保存并退出vim
- 回到shell
python3 guido.py
- 原来 是一下子 运行到底
- 现在可以 逐行
调试
运行
- 现在可以 逐行
- 调试的意思是
- 一行行地执行
- 看有没有错误(bug)
- 一行行地执行
pdb3 guido.py
- 使用
pdb3
来进行调试pdb
的意思是p
ython'sd
eb
ugger
- bug 是 虫子
- 在编程中 指的是错误
- debug 是 祛除虫子
- 在编程中 指的是找出错误
- 逐行进行调试
- 为什么 要
逐行
调试呢?
- 由于程序 不知道 哪里出的问题
- 所以才
逐步
来执行
- 所以才
逐步
调试运行的目的- 找到 bug所在的位置
- 也就是
debug
- 我们这就去
debug
- 进入
pdb3 guido.py
后- 不知道 怎么办
- 就要 求助(help)
- 不知道 怎么办
-
没有参数 的 话
- 显示
所有
命令
- 显示
-
help 给了很多的
命令主题
(topic)- 还说 可以
help
一下具体命令主题
- 查看哪个
命令主题
呢?
- 查看哪个
- 还说 可以
-
先查看
- 关于 help命令的 帮助
-
有
1
个参数help
- 显示
help
这个参数的帮助
- 显示
- h(elp) 的缩写是 h
- elp 可以省略
- 以上四句
- 都可以查看
- help 这个主题命令
- 都可以查看
- 这并不难 h h
- 再看看 其他命令
- l(ist)
- 可以列出 上下文11行的程序
- 缩写是l
- 如果再按 l
- 就会显示再后面11行
- 如果 l n
- 就会围绕着n显示前后11行
- 如果 l .
- 就会围绕着当前行
- 如果 ll
- 可以查看全部代码
- 当前行前面 有个箭头 ->
- 确实可以 看到上下文
- ->代表着 当前程序
当前行
的位置- 怎么 往下
走
呢?
- 怎么 往下
- ->代表着 当前程序
- n(ext)
- 可以 往下走一句
- 缩写是n
- 可以 往下走一句
- 试一下
- 把1982年输出了
- 然后
当前行
来到了1995年
- 然后
- 如何判断 1995年
- 在 整个程序中的位置 呢?
- l(ist)
- 可以列出
当前行
的上下文- 找到 当前行的位置
- 可以列出
- 在 第2行
- 执行 next 命令
- 就会输出
1995-----Guido in cnri
- 然后
箭头(->)
跳转到 第3行 - 准备 接下来 继续执行 第3行
- 就会输出
- 执行 next 命令
- 当然 也可以
一路next
下去
一路next
一路next
下去- python 解释器 就是
- 这样 一步步地
解释执行
py程序 的
- 这样 一步步地
- python 解释器 就是
- 是
顺序
执行 每行代码的- 一行行 挨排儿执行的
- 一步步地 把bug找出来
- 像找
凶手
一样!
- 像找
-
debug是 我见过最真实的 解谜游戏 了
- 比什么 剧本杀 好玩多了
- 一步步地分析
- 比什么 剧本杀 好玩多了
-
找不到凶手的 时候
- 需要冷静地分析
-
找到凶手的 时候
- 那种快乐太真实了!!!
- 终于来到 最后一行
- 如果 到这里 再next
- 会发生什么呢?
- 如果 到这里 再next
- 执行完 最后一句之后
- 就会 --return--
- 这个时候
- 已经到了 程序的尽头
- 再
next
会发生什么呢?
- 到头了 就又重来
- 就会重新执行 这个文件
- 就
圜道
了
- 从头开始了
py文件
是 按照顺序- 一行行 挨排 解释执行的
- 可以用
pdb3 hello.py
- 来调试程序
- 顺序执行
- 程序 在文本中 从上到下 是
- 一行行写的
- 解释器 从上到下 是
- 一行行解释的
- 调试 也是 从上到下
- 一行行 调试的
- 程序 在文本中 从上到下 是
- 这种方式 真的有利于改bug 吗?
- 我们下次再说!👋