简单的方法来把Python代码中的PDB断点?

只是一个方便的问题。 在Visual Studio和XCode这样的IDE中,我已经被debugging器弄坏了。 我觉得有点笨拙,不得不inputimport pdb; pdb.set_trace() import pdb; pdb.set_trace()来设置一个断点(我宁愿不在文件的顶部导入pdb,因为我可能会忘记它并将其保留)。

在Python代码中设置断点有一个简单的方法,就像你在IDE中看到的那样直截了当,不显眼吗?

您可以通过运行从命令行将程序运行到pdb

python -m pdb your_script.py

它会在第一行中断,然后你可以使用break命令在代码中随意添加断点,其语法是:

b(reak)[[filename:] lineno | 函数[,条件]]

它足够灵活,可以让您随时随地添加断点。

在vim中,我为此设置了一个macros(在我的.vimrc文件中):

 map <silent> <leader>b oimport pdb; pdb.set_trace()<esc> map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc> 

所以我可以按\ b(当不在插入模式下)并且在当前行之后添加一个断点,或者\ B(注意大写),并且在当前行之前放一个断点。

这似乎工作正常。 大多数其他“简单”程序员编辑(emacs,sublimetext等)应该有类似的简单方法来做到这一点。

编辑:我其实有:

 au FileType python map <silent> <leader>b oimport pdb; pdb.set_trace()<esc> au FileType python map <silent> <leader>B Oimport pdb; pdb.set_trace()<esc> 

只为python源文件打开它。 你可以很容易地为JavaScript或任何其他语言添加类似的行。

您可以使用:

 from pdb import set_trace as bp code code bp() code code 

如果您不想在每次运行程序时手动设置断点,并且您正在使用Python 3.2+,则以下信息可能会有所帮助:

如果在用户的主目录或当前目录中存在一个.pdbrc文件,它将被读入并执行,就像在debugging器提示符下键入一样。 这对别名特别有用。 如果两个文件都存在,则首先读取主目录中的文件,并且可以由本地文件覆盖定义的别名。

在版本3.2中更改:.pdbrc现在可以包含继续debugging的命令,如continue或next。 以前,这些命令不起作用。

3.2版新增function:pdb.py现在接受执行命令的-c选项,就像在.pdbrc文件中给出的一样,请参阅debugging器命令。

所以如果你想在第3行直接创build一个断点并停止执行,你可以使用下面的命令:

python -m pdb -c "b 3" -cc your_script.py

  • 来源: https : //docs.python.org/3.2/library/pdb.html

您可以使用支持pythondebugging的IDE,或者可以查看出色的Winpdb工具。 它可以在任何平台上运行,并为您的python脚本提供graphics化debuggingfunction。

http://winpdb.org/

您可以使用:

  • 翼ide
  • 日食与pydev插件
  • pycharms

上述所有支持从IDE内部进行pythondebugging。

这就是如何在命令行中使用pdb而无需在源代码中执行任何操作的情况(文档和其他在线资源不能很好地向过去仅使用可视debugging器的程序员进行解释):

通过在shell提示符下键入以下命令来启动pdb:

 python -m pdb 'python_script' 

这个命令初始化pdb,pdbdebugging器将在你的python_script的第一行中断,并等待你的input:

 (Pdb) 

这是与debugging器通信的接口。 现在,你可以在这里指定你的命令。 反对在可视debugging器中使用button或键盘快捷方式,在这里您将使用命令来派生相同的结果。

你可以通过命令“n”(next)来到代码的下一行:

 (Pdb) n 

执行下一步将显示行号和来源中的特定代码:

 > python_script(line number)method name -> current line in the source code 

您可以通过在源代码中指定行号来设置中断点。

 (Pdb) b 50 

在这里,debugging器被设置为在第50行中断。如果没有其他任何中断点,则第50行中的中断点将是第一个中断点,在这种情况下,中断点id可以是1。 如果你添加更多的断点,他们会得到标识符顺序(即2,3等)

一旦设置了中断点,您将继续执行程序,直到pdb到达中断点为止,如下所示:

 (Pdb) c 

一旦你到了一个断点,你可以用下面的n命令去下一行。 如果你想检查variables的值,你可以执行参数命令如下:

 (Pdb) p variable_name 

如果您不再需要中断点,则可以使用clear命令传入中断点的id来清除它:

 (Pdb) clear 1 

最后,当你完成debugging器的时候,你可以像退出python命令行解释器一样退出执行。

 (Pdb) exit() 

我希望这会帮助任何人开始使用pdb。 这里是你可以使用debugging器的命令列表: pdb这样的问题和答案

在Atom中,如果安装了Python插件,只需input“ pdb ”并按回车键,代码段就会input并追溯到你的回溯。

我已经习惯了这个,现在有时我只是input它,即使我在vim中编辑它,等待下拉菜单出现。

在脚本上运行debugging器最简单的方法就是

 pdb your_script.py 

在Linux命令行上运行pdb

 usage: pdb.py scriptfile [arg] ...