在调试我的Python代码时,我从命令行通过ipdb运行一个脚本,并设置了许多断点。然后我在一个或多个模块中进行一些更改,然后重新运行。但是,如果我只使用运行模块do not get reloaded。为了确保它们能够存在,我可以完全存在并重新启动Python,但是我需要重置所有断点,如果我有很多断点,如果我一遍又一遍地重复,那就很乏味。
有没有办法将断点保存到(i)pdb中的文件中,这样在不改变行号的小改动后,我可以转储断点,重启Python + pdb,然后重新加载断点?相当于Matlabs X = dbstatus
,保存/加载X
,并设置dbstop(X)
。
答案 0 :(得分:4)
您可以将断点保存到工作路径中的.pdbrc
文件中,也可以全局保存到您的主目录。文件应该是这样的:
# breakpoint 1
break /path/to/file:lineno
# breakpoint 2
break /path/to/file:lineno
您可以通过各种方式定义断点,就像在交互模式下一样。因此,只有break 4
或break 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")
将以上内容添加到您的全局.pdbrc并使用它:
> bs 15
这会将断点语句附加到本地.pdbrc文件中,以获取当前文件的第15行。
这不是完美的解决方案,但对我来说足够接近。根据您的需要调整命令。