web-dev-qa-db-ja.com

IPythonで関数にステップインする

Ipythonの関数の最初の行にステップインする方法はありますか?私は次のようになると思います:

_%step foo(1, 2)
_

これはipdbを実行し、fooの最初の行にブレークポイントを設定します。

これを今実行したい場合は、関数のソースコードに移動し、import ipdb; ipdb.set_trace()行を追加する必要があります。

35
Daniel Velkov

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>
56
Ian Clelland

あなたが求めていたIPythonマジックは現在、新しいバージョンで実装されています。 https://stackoverflow.com/a/46333421/4374441

関数にステップインするには、%debug foo(1, 2)、次にsと入力するだけです。

18
Jean Paul