【Python进阶(二)】——程序调试方法

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972

个人介绍: 研一|统计学|干货分享
         擅长Python、Matlab、R等主流编程软件
         累计十余项国家级比赛奖项,参与研究经费10w、40w级横向

文章目录

  • [1 程序调试基本方法](#1 程序调试基本方法)
    • [1.1 PDB调试](#1.1 PDB调试)
    • [1.2 debug调试](#1.2 debug调试)
  • [2 设置错误信息的显示方式](#2 设置错误信息的显示方式)
    • [2.1 mode Plain](#2.1 mode Plain)
    • [2.2 mode Verbose](#2.2 mode Verbose)
    • [2.3 debug](#2.3 debug)
  • [3 设置断言的方法](#3 设置断言的方法)

【Python进阶(二)】系列------程序调试方法,建议收藏!

该篇文章利用Python演示了程序调试方法,包括程序的基本调试方法里;错误信息显示方式;断言设置方法等内容。

1 程序调试基本方法

1.1 PDB调试

运行程序:

复制代码
#当python抛出异常或错误信息时,可以用PDB(The Python Debugger,Python调试器)进行程序调试
x=1
x1

运行结果:

复制代码
Traceback (most recent call last):

  File "<ipython-input-45-ff55524dcc80>", line 2, in <module>
    x1

NameError: name 'x1' is not defined

1.2 debug调试

运行程序:

复制代码
%debug  #打开PDB方法,退出PDB方法是输入q或quit
#除了PDB,常用的python调试器还有Pylint,Pycheaker

运行结果:

复制代码
 <ipython-input-45-ff55524dcc80>(2)<module>()
      1 x=1
----> 2 x1

ipdb> x
1
ipdb> q

2 设置错误信息的显示方式

2.1 mode Plain

运行程序:

复制代码
%xmode Plain
y=1
Y

运行结果:

复制代码
Exception reporting mode: Plain
Traceback (most recent call last):

  File "<ipython-input-48-e9d491258c9c>", line 3, in <module>
    Y

NameError: name 'Y' is not defined

2.2 mode Verbose

运行程序:

复制代码
%xmode Verbose
y=1
Y

运行结果:

复制代码
Exception reporting mode: Verbose
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-49-4e5fe2f91061> in <module>
      1 get_ipython().run_line_magic('xmode', 'Verbose')
      2 y=1
----> 3 Y
        global Y = undefined

NameError: name 'Y' is not defined

2.3 debug

运行程序:

复制代码
%debug

运行结果:

复制代码
<ipython-input-49-4e5fe2f91061>(3)<module>()
      1 get_ipython().run_line_magic('xmode', 'Verbose')
      2 y=1
----> 3 Y

ipdb> x
1
ipdb> y
1
ipdb> q

3 设置断言的方法

运行程序:

复制代码
a=1
b=0
assert b!=0,"分母不能等于0"

运行结果:

复制代码
AssertionError                            Traceback (most recent call last)
<ipython-input-51-2b94eee22f18> in <module>
      1 a=1
      2 b=0
----> 3 assert b!=0,"分母不能等于0"
        global b = 0

AssertionError: 分母不能等于0

运行程序:

复制代码
%debug

运行结果:

复制代码
<ipython-input-51-2b94eee22f18>(3)<module>()
      1 a=1
      2 b=0
----> 3 assert b!=0,"分母不能等于0"

ipdb> a
ipdb> b
ipdb> a
ipdb> quuit
*** NameError: name 'quuit' is not defined
ipdb> quit
相关推荐
sheji34162 分钟前
【开题答辩全过程】以 基于Java的甜品蛋糕网上商城的设计与实现为例,包含答辩的问题和答案
java·开发语言
民乐团扒谱机3 分钟前
【读论文】引力与惯性的起源:从全息原理到牛顿定律与爱因斯坦方程
算法·量子力学··万有引力·爱因斯坦方程·全息原理·牛顿定律
智能零售小白白4 分钟前
零售多门店库存调拨优化:需求预测与路径规划的技术实现
java·开发语言·零售
努力学算法的蒟蒻5 分钟前
day84(2.13)——leetcode面试经典150
算法·leetcode·面试
前路不黑暗@7 分钟前
Java项目:Java脚手架项目的意义和环境搭建(一)
java·开发语言·spring boot·学习·spring cloud·maven·idea
@––––––7 分钟前
力扣hot100—系列8-回溯算法
javascript·算法·leetcode
!停9 分钟前
数据结构二叉树—堆(2)&链式结构(上)
数据结构·算法
光泽雨12 分钟前
C#库文件调用逻辑
开发语言·c#
LuH112413 分钟前
【ILSVRC2012】ImageNet-1k数据集下载与处理脚本
python·深度学习·机器学习
C++ 老炮儿的技术栈14 分钟前
万物皆文件:Linux 抽象哲学的开发之美
c语言·开发语言·c++·qt·算法