调试程序的故乡_调试程序_debug_next_下一步_list_pdb3

简介: 这篇 content 主要介绍了使用调试工具 pdb3 进行 Python 程序调试的基本步骤与技巧。首先,当遇到调试困境时,可以通过输入 `help` 查看可用命令。使用 `l` (list) 或 `ll` (list long) 分别查看当前行附近的代码或整个程序的代码。`l .` 和 `l n` 可以分别用于查看当前行周围的代码或从第 n 行开始的代码。通过 `next` (`n`) 命令逐步执行程序,观察每一步的结果。当到达程序末尾并再次使用 `next` 时,程序会重新开始执行。

调试程序 🥋

回忆上次内容

  • 进到调试环境 没有思路
  • 就喊救命help
  • 可以看到各种帮助

  • 如何一步步向前执行呢?

list

  • l(ist)
  • 可以列出 上下文11行的程序
  • 缩写是l

多次列表

  • l只能查看一次程序列表
  • 因为原来都是电传打字机
  • 在当前位置
  • 打出来之后
  • 就不再打印了

  • 如果 l .
  • 就会围绕着当前行(.)

  • 如果 l n
  • 就会显示从n之后的11行

  • 这两种方式
  • 可以多次反复查看

完整代码

  • ll
  • 可以查看全部代码

  • 以上三种查看方式
  • 可以在同一位置上多次查看

使用命令

  • 当前行前面 有个箭头 ->

  • 确实可以 看到上下文
  • ->代表着 程序当前行的位置
  • 怎么 往下一行 走呢?

next

  • n(ext)
  • 可以 往下走一行
  • 缩写是n

  • 试一下

  • 把1982年输出了
  • 然后当前行来到了1995年
  • 如何判断 1995年
  • 在 整个程序中的位置 呢?

执行

  • l(ist)
  • 可以列出 当前行 的上下文
  • 找到 当前行的位置

  • 在 第2行
  • 执行 next 命令
  • 就会输出 1995-----Guido in cnri
  • 然后 箭头(->) 跳转到 第3行
  • 准备 接下来 继续执行 第3行
  • 当然 也可以
  • 一路next 下去

一路next

  • 一路next

完成调试

  • 一路next 下去
  • python 解释器 就是
  • 这样 一步步地 解释执行py程序 的

  • 顺序执行 每行代码的
  • 一行行 挨排儿执行的
  • 终于来到 最后一行
  • 如果 到这里 再next
  • 会发生什么呢?

最后一步

  • 执行完 最后一句之后
  • 就会 --return--

  • 这个时候
  • 已经到了 程序的尽头
  • next 会发生什么呢?

绕圈

  • 到头了 就又重来
  • 就会再从头执行 这个文件
  • 就重新开始了

  • 从头开始了

退出pdb3

  • 查询帮助
  • pdb3 的帮助系统
  • 可以实时互动
  • 什么不会了
  • 可以直接和pdb3交互
  • 现场就可以给出解释

  • q退出pdb3
  • 回到shell

总结

  • py文件 是 按照顺序
  • 一行行 挨排 解释执行的
  • 可以用 pdb3 hello.py
  • 来调试程序
  • 顺序执行
  • 程序 在文本中 从上到下 是
  • 一行行写的
  • 解释器 从上到下 是
  • 一行行解释的
  • 调试 也是 从上到下
  • 一行行 调试的
  • bug这个东西
  • 是什么时候才有的呢?

  • 最早那只 活的bug🪰
  • 找出来的 呢?🤔
  • 我们下次再说!👋
相关文章
SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
SAP Fiori Elements List Report 列表宽度决定逻辑的单步调试
|
3月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
396 1
|
2月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
2月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
3月前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
49 3
|
2月前
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估
|
2月前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法