当前位置: 首页 > 编程笔记 >

Python使用pdb调试代码的技巧

阎唯
2023-03-14
本文向大家介绍Python使用pdb调试代码的技巧,包括了Python使用pdb调试代码的技巧的使用技巧和注意事项,需要的朋友参考一下

什么是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直接退出调试界面

以上就是使用Python标准库执行一次debug过程,可以看到pdb在命令行下调试代码是非常出色的,当然在某些情况下pdb将不是最好的选择比如涉及到多线程相关,而在比较大型的项目使用pdb也显得力不从心,因此我们需要灵活选择调试方案,不过至少我们又掌握了一种代码调试工具,不是吗?

 类似资料:
  • 本文向大家介绍使用Python中PDB模块中的命令来调试Python代码的教程,包括了使用Python中PDB模块中的命令来调试Python代码的教程的使用技巧和注意事项,需要的朋友参考一下 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇到上述境地的次数比你想要的还要多。然而,Python中有一个整洁的调试特性(像其他大多数语言一样),在这种情况下使用非常方便。本文是

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow的主题。 7年前关闭。 改善这个问题 我想将pdb( Python调试器)添加到我的工具箱中。最好的入门方法是什么? 问题答案: 以下是开始使用Python调试器的资源列表: 阅读Steve Ferb的文章“用Python调试” 观看Eric Holscher的截屏视

  • 问题内容: 您调试Python的最佳秘诀是什么? 请不要只列出特定的调试器而不必说出它实际上可以做什么。 问题答案: PDB 你可以使用pdb模块,将pdb.set_trace()其插入任何地方,它将用作断点。 要继续执行,请使用(或或)。 可以使用pdb执行任意Python表达式。例如,如果发现错误,则可以更正代码,然后键入一个类型表达式以在运行的代码中起到相同的作用 ipdb是用于IPytho

  • 我是python和anaconda的新手,我安装和设置了包括环境变量在内的所有东西。然后我打开vs代码并键入 并尝试调试。我没有得到任何输出,调试器有几个超时。这是我运行调试器后在终端上的结果: (基本)c:\users\arun>cd e:\pythontutorials&&cmd/c“set”pythonioencoding=utf-8“&&set”pythonunbuffered=1“&&e

  • 我在Visual Studio Code Launch.json中有这个设置文件:

  • 我把我的代码作为一个独立的。c文件并阅读,为了调试,该文件必须在一个项目中。因此,我创建了一个空项目,并向其中添加了我的文件,设置了一些断点,当我运行调试器时,我在控制台上看到以下内容: 尝试了一些教程和一些视频,但没有成功。有人知道解决办法吗?有没有更简单的方法来调试. c文件?