Python使用pdb调试代码的技巧
作者:吾非同 发布时间:2022-11-18 04:36:06
什么是pdb
不知道大家在用Python写代码出现报错时是怎样调试的,从报错提示定位回去一步一步check每一行?如果没有IDE或者命令行写代码时又该怎样快速调试?这时如果使用pdb进行调试将会异常方便。
Pdb就是Python debugger,是python自带的调试器。通过 pdb 我们可以交互式的查看运行过程中变量的值、设置断点、逐行执行代码、查看代码的调用栈等等。并且如果环境没有 GUI 的话,那么 pdb 能够助你更快速的调试代码。
首先我们准备一段有问题的代码用于示例
def test(p):
p = p + 1
return p
def fastdebug():
print('start')
temp = 'ready'
print('ok')
res = test(temp)
print('end')
fastdebug()
这段代码很简单,当我们执行fastdebug()时,会执行fastdebug函数并在该函数中调用另一个函数test(),test函数接收一个参数p并计算p+1的值传出。很明显,在高亮的一句代码中传进去的参数temp是str,所以当我们执行上面一段代码时一定会报错
现在让我们假装不知道问题出在哪,使用pdb来调试这段代码。
使用pdb
由于pdb是python标准库因此我们可以直接import 使用
import pdb
接着在我们需要调试的代码段前设一个断点
pdb.set_trace()
应用到我们的代码:point_down:
可以看到运行代码后,pdb的调试器控制台将从放置set_trace()的位置开始等待我们的命令,并且箭头标记指向pdb接下来要运行的行。那么接下来介绍一些pdb中常用命令
使用n来执行下一行
可以看到此时调试器指向
print('start')
在弹出的文本框中输入n即可执行该行,并且箭头将指向下一行即将执行的代码
使用ENTER重复上一个命令
现在还没有到报错的位置,我们使用n或者直接回车重复执行上一个命令
使用p打印变量值
在Pdb中我们可以使用p + 变量名来查看变量值,比如我们查看变量temp的值
使用l查看上下行代码
在Pdb中我们可以使用l查看当前行上下几行代码
使用s进入子函数
现在,我们来到出错的这一行,之所以报错就是传进去变量出了问题,因此我们可以在pdb交互行中使用s来进入子函数test()
使用r执行函数直到结束
在pdb中可以使用r来执行当前运行函数到结束
使用c停止调试并继续运行
现在我们修改相关代码完成调试,可以使用c命令继续执行命令
当然也可以输入q直接退出调试界面
来源:http://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA==&mid=2247485121&idx=1&sn=53d56d0334aadb9b4f84ea8b410747b4


猜你喜欢
- range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列。xrange也有相同的功能, 今天来看下它们之间的
- 数据库服务器主要用于存储、查询、检索企业内部的信息,因此需要搭配专用的数据库系统,对服务器的兼容性、可靠性和稳定性等方面都有很高的要求。下面
- 本文实例讲述了JS+CSS实现仿支付宝菜单选中效果代码。分享给大家供大家参考。具体如下:这是一个漂亮的JS+CSS仿支付宝菜单,总体风格和形
- 本文主要研究的是使用Python获取本机所有网卡ip,掩码和广播地址,分享了相关的实例代码,具体介绍如下。搜了一天,竟然没找到一段合适的代码
- 操作步骤:一、安装MySQL数据库1、下载MySQL-5.6.17-winx64.zip文件。2、解压到指定目录,本例为D:\mysql-5
- 通过配置VIP,在进行主备切换时,出现的报错信息:1.当主备节点当前binlog文件名称相同时,原主节点的position小于主备切换后的p
- 在一篇文章 理解Python异步编程的基本原理 这篇文章中,我们讲到,如果在异步代码里面又包含了一段非常耗时的同步代码,异步代码就会被卡住。
- 1、绘制简单曲线图思路:通过3个坐标点,绘制曲线import matplotlib.pyplot as plt plt.plot(
- 在计算机普及的现代设计领域,文字的设计的工作很大一部分由计算机代替人脑完成了(很多平面设计软件中都有制作艺术汉字的引导,以及提供了数十上百种
- <% a="福建是中国的一个省|我们美丽中国的武夷山!" b="中国,我们,武夷山,福建,美国,苹果&q
- 求:机房、线上有多台主机,为了保障安全,需要定期修改密码。若手动修改,费时费力易出错。程序应该满足如下需求 :1、在现有的excel密码表格
- 有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种Python实现的方法,最后给一个批量操作的代码案例
- 准备工作:python:https://www.python.org/downloads/Dev-C++:https://sourcefor
- 正在看的ORACLE教程是:Oracle Index 的三个问题。索引( Index )是常见的数据库对象,它的设置好坏
- python新手一枚,操作系统Win10 64 bit,Python版本,3.7因为某个脚本需要用到win32con 和win32api模块
- 需求是表里的某个字段存储的值是以逗号分隔开来的,要求根据分隔的每一个值都能查出来数据,但是不能使用like查询。数据是这样的:查询的sql如
- 模板图片如下:需识别的图片如下:一、模板预处理1.将模板设置为二值图2.检测模板的轮廓3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储
- 题目描述利用opencv或其他工具编写程序实现医学处理。实现过程# -*- coding: utf-8 -*-'''
- 1.统一码(Unicode)Unicode也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。对于世界上所有的语言
- 什么是SeleniumSelenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流