030_动态控制断点_breakpoints_debug_调试290 播放 · 0 赞同视频

设置断点_break_point_continue_运行到断点 🥋
回忆上次内容
-
py文件 是
-
按照顺序一行行执行的
-
可以通过until命令
-
直接跳转到某行
-
也可以通过continue命令
-
一路到底

添加图片注释,不超过 140 字(可选)
-
还可以使用breakpoint()
-
在程序中 设置断点
-
然后配合continue
-
一下子跳到断点位置
-
断点breakpoint 位置
-
是需要提前设置好的
-
可以 在调试过程中
-
动态地设置 或者 取消断点吗?🤔
恢复环境
-
我们要把一行行执行的代码
-
变成一段段执行的代码
-
如果 上次运行的 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")
-
注意其中第4行
-
没有breakpoint()
-
如果有的话需要删除

添加图片注释,不超过 140 字(可选)
-
vi guido.py
-
进入底行命令模式
-
"+p
-
从系统剪贴板粘贴
编辑、调试一条龙
-
这次 在vim里面
-
直接运行pdb3

添加图片注释,不超过 140 字(可选)
-
:w|!pdb3 %
-
: 进入底行命令模式
-
w 保存
-
| 并且
-
!pdb3 %
-
用 外部命令pdb3
-
运行 % 当前文件
-
就像 :w|!python3 %
-
保存并运行
-
很像
-
连调试带修改 一条龙 了
回忆命令
-
进入pdb3之后
-
可以用help查看已经学习的命令

添加图片注释,不超过 140 字(可选)
-
h(elp)
-
查询帮助
-
q(uit)
-
退出debug环境
-
n(ext)
-
执行本行
-
跳转到下一行
-
l(ist)
-
列出当前执行位置
-
一行行执行代码 太慢
-
如何快速跳转
快速跳转
-
unt(il)
-
跳转到某行
-
c(ont(inue))
-
一直向前
-
直到遇到断点
-
breakpoint

添加图片注释,不超过 140 字(可选)
-
如何动态 打断点 呢?
查询帮助
-
查询帮助
-
找到 有分段作用的命令

添加图片注释,不超过 140 字(可选)
-
break在英文中是打断的意思
-
可以用这个break命令
-
把代码打成一段段的吗
-
去查查 break的帮助
-
h break
设置断点
-
break 的缩写 是 b

添加图片注释,不超过 140 字(可选)
-
可以 对于py文件的行号
-
设置断点
动手
-
给第5行
-
添加了一个断(break)点(point)

添加图片注释,不超过 140 字(可选)
-
next 一下
-
向下执行了一行
-
那怎么 快速让流程 流到断点 呢?
-
不会了 就查帮助
-
看看哪个命令好使
求助帮助
-
不同于next
-
一行行地执行
-
回忆上次的命令
-
continue
-
continue 可以缩写为
-
cont
-
c

添加图片注释,不超过 140 字(可选)
-
真的可以
-
让 流程快速流转 到 断点 吗?
-
continue一下
continue
-
continue 本该
-
直接流到 程序结尾
-
但是第5行
-
有断点
-
continue 让程序
-
直接流到 断点处

添加图片注释,不超过 140 字(可选)
-
为什么流程
-
不往下 继续流 了呢?
断(break)点(point)
-
因为断点
-
就是 截断流程的 点
-
流程流到这里 必须断开 的 点

添加图片注释,不超过 140 字(可选)
-
断点 就像 一个阀门(valve) [vælv]或大坝
-
会让水流停止
-
如果 流到断点 后
-
我想让 流程继续(continue)向下流
-
该如何呢?🤔
continue
-
由于 第五行后面
-
没有断点

添加图片注释,不超过 140 字(可选)
-
continue 会 一直流到py程序结尾
-
把 后面两行 都输出完成
-
然后 重新开始
-
又 圜道 了
-
如果这个时候 再c 呢?
流到 断点
-
从头开始后
-
还是会 一直流到 断点
-
只要 断点存在
-
continue 就会 流到断点

添加图片注释,不超过 140 字(可选)
-
遇到断点
-
必须要 停下来
-
能否 取消断点 呢?
-
求助一下help帮助
clear
-
clear 清除 断点
-
cl 是clear的缩写

添加图片注释,不超过 140 字(可选)
-
有两种清除方法
-
clear 文件名:行号
-
clear 断点编号
-
要删除哪些断点呢?
清除断点
-
b后面不加参数
-
可以显示所有断点

添加图片注释,不超过 140 字(可选)
-
clear guido.py:5
-
清除 guido.py第5行的 断点
-
清除 之后
-
原来的断点 消失了
-
还有一种 清除断点的方式 是如何的 呢?
-
clear断点编号
清除某个断点
-
再在guido.py第5行
-
建立 一个断点
-
b 5
-
这个断点 是2号断点

添加图片注释,不超过 140 字(可选)
-
1号断点 已经被clear了
-
现在 断点 从2开始 编号

添加图片注释,不超过 140 字(可选)
-
clear 2
-
可以 清除 这个2号断点
-
断点都清空了
-
q 命令退回到vim
-
为什么 要有断点 呢?
断点的意义
-
被调试程序(debug) 可能非常大
-
可能 有 万行😏
-
想要 找到程序中的问题
-
一步一步next 太慢

添加图片注释,不超过 140 字(可选)
-
所以 只有通过断点
-
才能 直接跳到 某个位置

添加图片注释,不超过 140 字(可选)
-
就像排除线路故障
-
需要 在中间位置 建立观测点
-
尽快对bug定位
设置3个断点
-
这次 调试:!pdb3 %
-
要设置 更多断点

添加图片注释,不超过 140 字(可选)
-
1, 3, 6行
-
各一个断点
更多断点
-
断点 可以把万行程序 分几段
-
从而 分段排查问题

添加图片注释,不超过 140 字(可选)
-
尝试删除 第2个断点
删除第2个断点
-
先 b 列出所有的断点
-
要删除 2号断点
-
位于guido.py的第3行

添加图片注释,不超过 140 字(可选)
-
删除 成功
-
还剩 两个断点
-
断点就是 这样玩的
-
可以依据行号删除断点吗?
依据行号删除度断点
-
查看帮助

添加图片注释,不超过 140 字(可选)
-
可以根据行号删除断点

添加图片注释,不超过 140 字(可选)
-
现在 可以更快速地
-
进行调试(debug)了!!😁
总结
-
这次 动态设置了 断点
-
断点 可以把代码
-
切成一段一段的
-
可以 更快地调试
-
调试的目的 是 去除 bug
-
别害怕 bug
-
一步步 总能找到 bug
-
这 就是 程序员基本功
-
调试 debug
-
在bug出现的时候
-
甚至还没有出现操作系统
-
那操作系统
-
是怎么开始有的呢??🤔
-
我们下次再说!👋