2012-03-13 74 views
15

这里是我行动的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'),有一个在ipdb没有.run

+1

在ipdb 0.8中有一个'.run'。 – gerrit 2014-04-04 13:00:47

+1

[步入IPython中的函数]的可能的重复(http://stackoverflow.com/questions/12646670/stepping-into-a-function-in-ipython) – LondonRob 2015-03-05 17:20:09

回答

2

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

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

也许'魔术'命令%调试和/或%pdb IPython可以帮助你。

+5

不,这不是我所期待的。他们都停止了例外。我只想一步一步地观看程序的执行。 – 2012-04-06 08:04:40

+0

从“IPython 5”开始,在执行任何操作之前,“debug”停止,允许您设置断点和/或开始逐步执​​行代码。 – 2017-09-20 16:09:24

相关问题