【问题标题】:Save breakpoints to file将断点保存到文件
【发布时间】:2015-03-03 20:44:21
【问题描述】:

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

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

【问题讨论】:

    标签: python debugging pdb ipdb


    【解决方案1】:

    您可以将断点保存到工作路径中的.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.

    【讨论】:

    • 除了输入 break 并将结果复制粘贴到 .pdbrc 之外,是否有直接的方法来写入/附加当前的断点集?
    • @gerrit 不,但您可以利用别名。更新了答案。
    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2012-08-04
    • 2018-04-14
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多