2017-09-29 32 views
2

Jupyterノートブックでいくつかのコードをデバッグしようとしています。私は 4種類の方法を試してみた、それらはすべて同じ問題に苦しむ:あなたが見ることができるようJupyterノートブックで正しく動作しないデバッガー

--Return-- 
None 
> <ipython-input-22-04c6f5c205d1>(3)<module>() 
     1 import IPython.core.debugger as dbg 
     2 dber = dbg.Tracer() 
----> 3 dber() 
     4 tst = huh.plot(ret_params=True) 
     5 type(tst) 

ipdb> n 
> y:\miniconda\lib\site-packages\ipython\core\interactiveshell.py(2884)run_code() 
    2882    finally: 
    2883     # Reset our crash handler in place 
-> 2884     sys.excepthook = old_excepthook 
    2885   except SystemExit as e: 
    2886    if result is not None: 

、私はpdbドキュメントから理解ものから、次の行を実行する必要がありnコマンド、また、同じ問題を抱えている

s(私はipdbは私がipdbないpdbに特異的に参照する任意のコマンドのドキュメントを見つけることができない、特に以来、IPython上で動作するだけでpdb適合していると仮定しています)。これは実際に私がしたいことです - plotコールへのステップ(これは私が理解したところから、これはsがするはずです)ですが、私が得るものは全く同じです。nから得るものです。私もちょうどrを試してみましたが、私は同じ問題を抱えています。

私が見たすべての例では、コマンドに続く行にブレークポイントを設定するためにTracer()()またはIPython.core.debugger.PDB().set_trace()を使用していますが、どちらも同じ問題を引き起こします(実際はまったく同じものです)。 ( - ちょうどラインを実行し、ちょうど関数にステップしないsを使用して、どのようなラインと言う実行されている行のコードを表示しません)

は私も %debugMultipleInstanceError)と %%debugを試してみました。

編集:今年の4月のブログ記事によれば、平文pdbも機能するはずです。それは私が対話的にノートPCをデバッグすることができない、それだけでデバッグ中の現在の行(おそらくバグ)を印刷し、そしてそれは、IPythonのset_trace(IPythonのset_trace()と平野IPythonコンソール上Tracer()()

と同じ問題を抱えているだけ私がテストしたもの)はうまく動作します。

答えて

0

Jupyterノートブックでデバッグするときに同じ問題が発生しました。しかし私のために働いているのは、関数内にset_trace()を呼び出すときです。他の人がこの問題に遭遇しない理由を私は本当に理解しませんが、なぜここに説明されますか(click)。今

from IPython.core.debugger import set_trace 

def thisfunction(x): 
    set_trace()  # start debugging when calling the function 
    x += 2 
    return x 

thisfunction(5)  # ipdb console opens and I can use 'n' 

enter image description here

私は「n」を使用することができ、デバッグプロセスが実行されます:あなたは、あなたの問題のための実用的なソリューションを必要とし、あなたは自己書かれた機能をデバッグしたい場合はとにかく、これを試してみてください次の行に問題はありません。しかし、次のコードを使用すると、上記の問題が発生します。

from IPython.core.debugger import set_trace 

def thisfunction(x): 
    x += 2 
    return x 

set_trace()   # start debugging before calling the function. 
         # Calling 's' in the ipdb console to step inside "thisfunction" produces an error 
thisfunction(5)   

enter image description here

誰かが問題を完全に解決することができるまで、この情報がお役に立てば幸いです。

関連する問題