2012-03-13 93 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

相關問題