调试程序的故乡_调试程序_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🪰
  • 找出来的 呢?🤔
  • 我们下次再说!👋
相关文章
|
5月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
904 1
|
4月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
4月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
5月前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
138 3
|
5月前
|
安全 Java 索引
Java List:从入门到精通,一篇文章就够了!
【6月更文挑战第17天】Java List是有序元素集合,支持索引访问、添加、删除和修改。从ArrayList、LinkedList到Vector,各种实现满足不同场景需求。使用add()添加元素,get()获取,set()修改,remove()删除。遍历可用for-each或Iterator,subList()创建子集。注意线程安全,可选synchronizedList()、Vector或CopyOnWriteArrayList。理解List的基本操作和特性,能提升编程效率。
74 1
|
4月前
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估
|
4月前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
4月前
|
存储 Java 索引
Java List接口实现原理与性能评估
Java List接口实现原理与性能评估