【问题标题】:Is it possible to run commands in IPython with debugging?是否可以通过调试在 IPython 中运行命令?
【发布时间】:2012-03-13 17:53:11
【问题描述】:

这是我在 IPython 中的操作:

> import my_module
> import ipdb

现在,我的模块缺少任何可执行代码,它只声明类。所以我要声明:

> g = my_module.Graph()
> f = open('test.osm')
> g.from_osm(f)

我想在 Graph.from_osm 中放置一个断点,而不编辑文件。我不想将后面几行放入文件中并执行python -m ipdb ...。我只想运行命令和调试。

这可能吗?

补充:我明白了,有可能

%run -d script_name

> import pdb
> pdb.run('statement')

但不可能做到ipdb.run('statement')ipdb中没有.run

【问题讨论】:

标签: python debugging ipython


【解决方案1】:

Since IPython 3.2.2%debug 魔法,如果给定一个参数(单行或单元格),则在调试器下执行它。

  • 它在执行任何操作之前中断,让您有机会设置断点和/或开始单步执行代码。
  • 它接受一个--breakpoint 参数来设置一个更多的断点(作为命令的一部分,它将保存在命令历史记录中,为重复调用节省您的输入)。

【讨论】:

    【解决方案2】:

    也许 IPython 中的“魔术”命令 %debug 和/或 %pdb 可以帮助您。

    【讨论】:

    • 不,这不是我想要的。他们都停在一个例外上。我只是想一步步看程序执行。
    • 截至IPython 5debug 在执行任何操作之前停止,允许您设置断点和/或开始单步执行代码。
    • IPython 6 在异常处停止