是否可以通过调试在IPython中运行命令?

时间:2012-03-13 17:53:12

标签: python debugging ipython

以下是我在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')无法做到.run,而ipdb中没有{{1}}!

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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