029调试中的跳转与断点228 播放 · 0 赞同视频
until_直接跳转到_unt_breakpoint_断点函数 🥋 回忆上次内容
-
上次 了解到
-
计算机早期操作员 多是女性
-
她们最早发明了 bug🕷 这个概念
-
到现在也没有遇到一个bug
-
如何才能让程序里面有bug 呢?
故意改错
-
如果程序真的出了错误
-
调试的时候会发生什么呢?
vi guido.py
-
把第2行 故意改错
print("1982------Guido in cwi") pront("1995------Guido in cnri") print("2000------Guido in beopen") print("2005------Guido in google") print("2012------Guido in dropbox") print("2020------Guido in microsoft") 先直接运行
-
如果是python3 guido.py
-
会报NameError
-
之后直接退回shell
-
犯罪现场的各个变量的值
-
都无法取得
-
只是知道 这个报错结果
-
再进入 调试程序
调试程序
-
运行到第二行的时候
-
系统报了错误
-
发现错误
-
是好事
-
不是 我们无能的证明
-
而是 努力的见证
-
更是 进步的阶梯
-
我们就知道了
-
错误的位置
-
错误的类型
-
甚至可以观察
-
当时的现场的状态
观察犯罪现场
-
在错误发生的现场
-
观察当时环境中的变量和状态
-
可以在环境中观察
-
print
-
pront
-
一步步地 把bug找出来
-
就像 把凶手 找出来 一样!
最真实的解谜游戏
-
debug是 我见过最真实的 解谜游戏 了
-
比 剧本杀 好玩多了
-
一步步地分析
-
找不到凶手的 时候
-
需要冷静地分析
-
找到凶手的 时候
-
那种快乐太真实了!!!
改回正确
-
回到vim
-
并且 修改了
-
第二行pront的错误
-
但这一行行执行
-
实在 有点慢啊
-
毕竟 都经历过 万行代码 了
-
得 按10000次的n 才能执行完 啊?
-
有快点的方法吗?🤔
-
可以直接跳到某一行吗?
until 直接跳到
-
查询 until 的帮助
-
我们去试试
until 使用
-
until 5
-
可以直接运行到第5行
-
如果有问题
-
就会爆出来
-
如果没有问题
-
就等待后续
-
next
-
until
-
这样可以
-
快速捋到犯罪现场
-
找到出bug时的状态
-
除了 until之外
-
还有什么命令
-
可以 让流程 更快速地 流动吗?
continue
-
快速流动这个命令叫做 continue
-
continue 可以缩写为
-
cont
-
c
-
continue就是一路向前
-
直到 最后一行
-
除非 遇到断点
-
breakpoint
一路向前
-
由于没有断点
-
continue 会直接
-
从第一句 执行到 最后一句
-
如何让他在第3句之后停下来呢?
-
q命令退出pdb
-
然后去编辑guido.py
指定 断点位置
-
在第四行添加了一个函数
-
breakpoint()
-
添加一个断点
-
断点的位置
-
不一定是 有bug的位置
-
而是 为了找bug而设置的 观测点
-
保存并退出vim
-
重新用pdb3 运行 guido.py
-
再试试 continue
调试过程
-
c这一下
-
执行了三行代码
-
直接continue 到了断点(breakpoint)
-
断点位置
-
是写到程序里的
再继续
-
再continue一下
-
就直接又绕道开头了
一个小笑话
-
程序员 在公司写代码
-
老婆 要他回来
-
不回来 就离婚
-
结果 他来了句
-
等我修完这个bug
-
就跟你离婚
-
全部门的人 都愣住了
-
领导 让他 赶紧回家
-
他回复 死也不回家
-
妻子 听完后
-
安心地 挂上了电话
-
再也没有
-
比 这个更加 海枯石烂的爱情诺言!
总结
-
py文件 是
-
按照顺序一行行执行的
-
可以通过until命令
-
直接跳转到某行
-
还可以使用breakpoint()
-
在程序中 设置断点
-
然后配合continue
-
一下子跳到断点位置
-
但是这样 在debug的时候
-
看不到 断点breakpoint 位置
-
可以 在调试过程中
-
动态地设置 或者 取消断点吗?🤔
-
我们下次再说!👋