[oeasy]python029_ until_直接跳转到_unt_breakpoint_断点函数

本文涉及的产品
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
函数计算FC,每月15万CU 3个月
云原生网关 MSE Higress,422元/月
简介: 回顾早期计算机操作员多为女性,她们甚至发明了“bug”这个词。为了体验调试过程,我们故意在Python脚本中引入了一个拼写错误,并通过直接运行程序遇到了`NameError`。通过`until`命令,我们可以快速跳转到指定行执行,这对于大型项目非常有用。此外,`continue`(或简写`c`)命令则会一直执行到下一个断点或程序结束。我们还可以在代码中使用`breakpoint()`设置断点,配合`continue`命令使用,实现快速跳转至特定位置进行调试。这些技巧使调试过程变得高效且有趣,如同解开谜题一般。下次我们将探讨如何在调试过程中动态设置与取消断点。

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 位置
  • 可以 在调试过程中
  • 动态地设置 或者 取消断点吗?🤔
相关文章
|
4天前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
23 0
|
1天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
1天前
|
存储 数据安全/隐私保护 索引
|
3天前
|
索引 Python
Python中的其他内置函数有哪些
【10月更文挑战第12天】Python中的其他内置函数有哪些
7 1
|
3天前
|
开发者 索引 Python
Python中有哪些内置函数
【10月更文挑战第12天】Python中有哪些内置函数
6 0
|
4天前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
12 0
WK
|
8天前
|
Python
Python函数命名
在Python中,函数命名应清晰、简洁且易于理解。遵循PEP 8风格指南,使用小写字母和下划线分隔单词,避免单字母命名和保留字。函数名应描述功能,以动词开头,避免泛化名称,使用有意义的缩写,保持命名风格一致,避免魔法数字。示例包括 `calculate_area_of_circle`、`fetch_data_from_api` 和 `save_file_to_disk`。这些实践有助于创建易读、易维护的代码。
WK
8 0
|
9天前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
18 0
|
14天前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
15 0
|
7天前
|
存储 程序员 开发者
Python编程基础:从入门到实践
【10月更文挑战第8天】在本文中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。我们将从Python的基本概念开始,然后逐步深入到更复杂的主题,如数据结构、函数和类。最后,我们将通过一些实际的代码示例来巩固我们的知识。让我们一起开始这段Python编程之旅吧!