简单的方法来把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。
您可以使用:
- 翼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] ...