python - 保存断点到文件

标签 python debugging pdb ipdb

在调试我的 Python 代码时,我从命令行通过 ipdb 运行一个脚本,并设置了一些断点。然后我对一个或多个模块进行一些更改,然后重新运行。但是,如果我只是使用运行模块 do not get reloaded .为了确保他们这样做,我可以存在并完全重新启动 Python,但随后我需要重置所有断点,如果我有很多断点并且一遍又一遍地这样做,这会很乏味。

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

最佳答案

您可以将断点保存到工作路径中的 .pdbrc 文件或全局保存到您的主目录。文件应该是这样的:

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

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

您可以通过多种方式定义断点,就像在交互模式中一样。所以只需 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")

将上面的内容放到你的全局 .pdbrc 中并像这样使用它:

> bs 15

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

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

Read more about aliases here.

关于python - 保存断点到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841520/

相关文章:

python - ipython事后调试: scope of outer function

python - 在 pdb 中打印值

python - 如何根据相似值将一列拆分为多列

angular - karma : How to debug a RangeError: Maximum call stack size exceeded?

python - 如何在一个命令中启用所有或多个断点?

ios - Xcode:禁用 cocoa 断点

debugging - NUnit 与 VS 2010 不再在断点处停止

python - pygtk:打印大型输出数据集时使用 io_add_watch block 实现的异步输出

python编译器书

Python:什么时候执行类->函数->括号。 & Matplotlib 图形不会显示