将断点保存到文件

ger*_*rit 6 python debugging pdb ipdb

在调试我的Python代码时,我从命令行通过ipdb运行一个脚本,并设置了许多断点.然后我在一个或多个模块中进行一些更改,然后重新运行.但是,如果我只是使用运行模块,请不要重新加载.为了确保它们存在,我可以存在并完全重新启动Python,但是我需要重置所有断点,如果我有很多并且如果一遍又一遍地完成,那么这很麻烦.

有没有办法将断点保存到(i)pdb中的文件中,这样在不改变行号的小改动后,我可以转储断点,重启Python + pdb,然后重新加载断点?相当于Matlabs X = dbstatus,保存/加载X和设置dbstop(X).

ruu*_*ter 5

您可以将断点保存到.pdbrc工作路径中的文件中或全局保存到主目录中。文件应具有以下内容:

# breakpoint 1
break /path/to/file:lineno

# breakpoint 2
break /path/to/file:lineno
Run Code Online (Sandbox Code Playgroud)

您可以采用各种方式定义断点,就像在交互模式下一样。因此,公正break 4break method也将奏效。

该文件对pdb和ipdb均适用,因为以后将拥有pdb的所有内容以及更多内容。

奖励

您可以alias用来更轻松地保存断点。例如:

# append breakpoint to .pdbrc in current working directory
# usage: bs lineno
alias bs with open(".pdbrc", "a") as pdbrc: pdbrc.write("break " + __file__ + ":%1\n")
Run Code Online (Sandbox Code Playgroud)

将上述内容放在您的全局.pdbrc中,并按以下方式使用它:

> bs 15
Run Code Online (Sandbox Code Playgroud)

这会将断点语句附加到当前文件第15行的本地.pdbrc文件中。

这不是完美的解决方案,但对我来说足够接近。根据需要调整命令。

在此处阅读有关别名的更多信息。