步入IPython中的一个函数

Dan*_*kov 35 python debugging ipython pdb

有没有办法在ipython中进入函数的第一行.我想象的东西看起来像:

%step foo(1, 2)
Run Code Online (Sandbox Code Playgroud)

它运行ipdb并在第一行设置断点foo.

如果我现在想要这样做,我必须转到函数的源代码并添加import ipdb; ipdb.set_trace()一行.

Ian*_*and 55

今年早些时候,ipdb已经支持runcall,runeval和run 0.7.您可以像下面这样使用它pdb.runcall:

In [1]: def foo(a, b):
   ...:     print a + b
   ...:

In [2]: import ipdb

In [3]: ipdb.runcall(foo, 1, 2)
> <ipython-input-1-2e565fd9c4a4>(2)foo()
      1 def foo(a, b):
----> 2     print a + b
      3

ipdb>
Run Code Online (Sandbox Code Playgroud)

  • 实际上事实证明你不需要外部ipdb,你只需要从IPython.core.debugger导入Pdb; IPDB = PDB()`. (9认同)

Jea*_*aul 15

你要求的IPython魔法现在用更新的版本实现:https: //stackoverflow.com/a/46333421/4374441

您只需键入%debug foo(1, 2)然后s进入该功能.

  • 六年后*到今天*从原来的答案!+1 对我有用。 (2认同)