如何使用Python调试器

Python编程语言的强大功能和灵活性源自强大的标准库和丰富的第三方软件生态系统。 Python程序员可以利用许多有用的工具,并且这些工具也可以扩展到调试。

可以使用许多具有调试功能的Python IDE, 第三方Python调试器专用工具来调试Python程序,但交互式调试也已内置在该语言中。 您可以在Python程序中调用交互式调试作为其正常执行的一部分。

在这里,我们将快速浏览如何使用Python的内置交互式调试器pdb

Python调试器示例

pdb模块是Python标准库的一部分,因此不需要单独安装。 它可以直接调用。 这是使用pdb的简单示例:

import pdb
x=0
while True:
    x+=1
    print ("Current number:", x)
    pdb.set_trace()

在Python 3.7和更高版本中,您可以(并且应该)使用新的内置函数breakpoint()代替pdb.set_trace() 。 (在运行breakpoint()时会自动导入pdb 。)

x=0
while True:
    x+=1
    print ("Current number:", x)
    breakpoint()

当您运行上述程序时,您将看到Current number: 1 ,然后提示: (Pdb) 。 此提示表明调试器已启动并正在等待在当前堆栈帧的上下文中执行命令。

Python调试器命令

以下是pdb中一些最常用的命令:

p / pp :打印表达式

打印(或“漂亮打印”)某些表达式的结果。 如果运行上述程序并在第一个断点处键入px ,则应该看到1 (该点处x的值)。

c :继续

继续执行程序的正常执行,直到遇到另一个断点。 键入c ,然后在下一个断点处输入px ,您应该看到2 (在另一个循环循环后x的值)。

s :向前走

在程序中前进一行。 执行该行后,将重新出现pdb提示符。

l :列表来源

在执行的特定点打印程序的源代码。 当前行将显示在打印输出的中间,旁边有一个箭头。

w :打印堆栈跟踪

此时显示程序的整个堆栈。 这样,您就可以查看当前模块在上下文中的位置以及其他所有正在执行的事情。

! :执行语句

可以在当前运行的模块的上下文中执行任何有效的Python语句,只需在其前面加上感叹号即可。 对于上面的示例,在pdb提示符下,您可以键入!x=100来将x设置为100。(请注意,表达式中没有空格;任何空格都将被视为Python语法缩进。)

使用pdb进行条件调试

由于您仅可以使用Python语句调用调试器,因此可以有条件地弹出调试器-例如,使用if/thentry/except块。 这是处理某些情况出现时出现的问题的便捷方法。

执行条件调试的另一种方法是使用命令pdb.run()评估Python语句,或者使用pdb.runeval()评估Python表达式:

pdb.run('x+=1')
pdb.runeval('x==0')

当执行这些命令时,表达式或语句在pdb控制下求值。 因此,您可以在运行时动态构造表达式或语句,并使用pdb查看它们如何消失。

要了解pdb其他功能,请深入研究Python官方调试器文档

From: https://www.infoworld.com/article/3327196/how-to-use-the-python-debugger.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值