pdb用法-Python 命令行调试工具

2024-04-28 06:18

本文主要是介绍pdb用法-Python 命令行调试工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写代码(bug)的过程中调试时不可缺少的一个环节,今天学习了Python的命令行调试工具-pdb,本篇博客为学习记录.
pdb是Python自带的一个库,所以不需要另外的安装即可直接使用.

(一) 进入pdb调试模式的两种方法:

1.直接在命令行参数指定使用pdb模块启动Python文件
python -m pdb test.py

程序将进入调试界面
这里写图片描述

2.在程序代码中设置断点

首先需要在程序中使用如下语句导入pdb模块:

import pdb

然后再在需要设置断点的地方放置如下断点设置代码:

pdb.set_trace()

然后在命令行中正常运行程序,程序会在设置断点的位置自动停下进入pdb调试模式.
例如运行如下程序代码:

#/usr/bin/python
import pdbfor i in range(1,10):pdb.set_trace()print(i)

这里写图片描述
发现程序停在了指定位置(这里是第6行),并且进入了调试模式.

(二) 调试程序的方法

进入调试程序后可以使用相应的命令进行指定的操作.
这里介绍几个常用的命令:可以使用命令全称也可以使用缩写

1.使用pdb的命令

next(缩写:n),向下执行一步,
这里写图片描述
比如我这里还是刚才那个程序,输入n回车之后,程序执行了进入断点处的下一句代码(也就是print(i))
更多的命令请看->4.命令附录

2.直接输入变量名称

还可以直接输入变量的名称查看变量的值
这里写图片描述

3.使用类的方法查看变量/类的信息(输入表达式)

像数组这种还可以使用类似 i.shape 这样的输入直接调用相关方法,这个拓展就很广了,大家可以自由发挥
这里写图片描述
当然我这里的i是个int肯定是无法查看shape的,但是可以看见pdb会详细给出相应的报错提示信息,还是很好用的.

4.更多的命令以及详细用法
命令缩写说明
breakb设置断点
continuecont/c继续执行至下一个断点
nextn执行下一行,如果下一行是子程序,不会进入子程序
steps执行下一行,如果下一行是子程序,会进如子程序
wherebt/w打印堆栈轨迹
enable-启用禁用的断点
disable-禁用启用的断点
pp/p-打印变量或表达式
listl根据参数值打印源码
upu移动到上一层堆栈
downd移动到下一层堆栈
restartrun重新开始调试
argsa打印函数参数
clearcl清楚所有断点
returnr执行到当前函数结束
quitq结束调试,退出当前程序

注:需要注意n和s两个命令的区别,restart和run这里写作缩写,其实这两个命令可以看成是同一个命令.

这里只列出了部分比较常用的命令,更多的命令以及详细的解释请参考Python官方文档:
https://docs.python.org/3/library/pdb.html
(可以在页面最上方选择Python版本,但是好像基本命令都是一致的,这里我没有详细对比.)

这篇关于pdb用法-Python 命令行调试工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942494

相关文章

Python 上传图片到OneNet

Python 上传图片到OneNet 最近参加了中国移动创客马拉松,需要用到OneNet平台。由于要向平台上传图片,所以写了这段代码。 1、使用postman发送post请求 使用post方法,在URL栏中填写指定的URL; 在Headers中添加api-key; 在Body中选择binary(二进制数据),并指定文件1.jpg 然后点击Send,发送这段数据,得到的返回结果是一

什么是工具? 从语言模型视角的综述

24年3月CMU和上海交大的论文“What Are Tools Anyway? A Survey from the Language Model Perspective”。 到底什么是工具? 接下来,工具在哪里以及如何帮助语言模型? 在综述中,对语言模型使用的外部程序工具进行了统一定义,并对语言模型工具场景和方法进行了系统回顾。 测量各种基准上所需的计算和性能增益,以及该领域的挑战和潜在的未来研

万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍

万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!《100天精通Golang(基础入门篇

Python字符串操作方法详解

python 字符串常用方法 创建字符串:s = "Hello, World!" 字符串索引和切片 # 索引和切片 print(s[0]) # 输出: H (索引第一个字符) print(s[7]) # 输出: , (索引第八个字符) print(s[1:5]) # 输出: ell (切片从索引1到4的子串) find() 和 index():查找子串在字符串中

vscode调试Electron+ts

调试Electron+js 调试Electron+js: https://www.electronjs.org/zh/docs/latest/tutorial/debugging-vscode 调试Electron+ts 首先看一下,我的目录结构。目录结构决定了launch.json中的路径部分。我将在项目根目录下进行调试,项目根目录下包含electron代码部分,和src等前端代码部分

python对排列三的分析

对排列三(一种常见的彩票游戏)进行分析,我们通常关注其号码组合的可能性、中奖概率以及可能的号码趋势或模式。然而,由于排列三是基于随机抽取的,因此没有一种方法可以预测下一个中奖号码,但我们可以通过Python来分析历史数据和统计信息。 以下是一个简单的Python脚本示例,用于分析排列三的一些基本统计信息: python复制代码 from collections import Counte

答辩PPT制作成本高?推荐3个aippt工具

这些网站我愿称之为制作答辩PPT的神! 很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路,一窍不通。但这并不是你们的错,对于平时没接触过相关方面,第一次搞答辩PPT的人来说,这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和目的 2.研究方法 3.研究思路 4.论文的研究的主要问题(可以把你的论文里问题部分列上) 5.论文的问题解决策略(同样

数据特征降维 | 多维缩放(MDS)附Python代码

多维缩放(Multidimensional Scaling,MDS)是一种经典的降维和可视化技术,用于将高维数据映射到低维空间中,以便更好地展示数据的相似性和差异性。 MDS的基本思想是通过测量样本之间的距离或相似性,将其映射到低维空间中,使得在低维空间中的距离能够保持或近似原始高维空间中的距离。通过这种方式,MDS可以展示数据样本之间的关系和结构,并提供直观的可视化结果。 以下是MDS的基本

在Ubuntu命令行中一行代码配置C++的OpenCV库

本文介绍在Linux操作系统的Ubuntu版本中,配置C++ 语言环境下的计算机视觉库OpenCV的方法。   首先,为了保证我们可以在Ubuntu中正确配置OpenCV库,需要使得计算机内具有C++ 开发环境。其中,在Ubuntu中,我们可以基于命令行方便地配置C++ 开发环境,具体方法大家参考文章Linux Ubuntu命令行快速配置C++开发环境(https://blog.csdn.n

C# SortedList 用法

文章目录 基本用法主要属性和方法注意事项 `SortedList` 的一些高级用法和注意事项。自定义排序规则线程安全性性能考量与其他集合的对比 SortedList 是 C# 中的一个集合类,它是一个键/值对集合,其中的键自动按顺序排序。这个类位于 System.Collections.Generic 命名空间中(对于非泛型版本则是 System.Collections),