タグ付けされた質問 「pdb」

15
IPythonを使用した段階的なデバッグ
私が読んだことから、Pythonでコードをデバッグする方法は2つあります。 pdbまたはなどの従来のデバッガーを使用しますipdb。これは、cfor continue、nfor step-over、sfor step-intoなどのコマンドをサポートしていますが、オブジェクトの検査に非常に役立つIPythonシェルに直接アクセスすることはできません。 IPythonシェルをコードに埋め込むことによるIPythonの使用 。あなたがすることができ、あなたのコードで使用します。プログラム/スクリプトがステートメントにヒットすると、IPythonシェルに移動します。これにより、すべてのIPythonの利点を使用して、オブジェクトの完全な検査とPythonコードのテストが可能になります。ただし、使用する場合、便利なキーボードショートカットを使用してコードをステップバイステップで実行することはできなくなります。from ipython import embedembed()embed()embed() 両方の長所を組み合わせる方法はありますか?すなわち できるように ステップバイステップの便利なPDB / ipdbキーボードショートカットを使用してコードによる。 そのような手順(たとえば、所定のステートメント)で、本格的なIPythonシェルにアクセスできます。 デバッグIPython のように MATLAB: このタイプの「拡張デバッグ」の例は、MATLABにあり、ユーザーは常に MATLABエンジン/シェルに完全にアクセスでき、コードを段階的に実行したり、条件付きブレークポイントを定義したりできます。他のユーザーと話し合ったところ、これは、MATLABからIPythonに移行するときに人々が最も見逃してしまうデバッグ機能です。 Emacsおよびその他のエディターでのIPythonデバッグ: 私は質問を具体的にしすぎたくありませんが、私は主にEmacsで作業しているので、この機能をそれに組み込む方法はあるのでしょうか。理想的には、Emacs(またはエディター)を使用すると、プログラマーはコードの任意の場所にブレークポイントを設定し、インタープリターまたはデバッガーと通信して、選択した場所で停止し、その場所で完全なIPythonインタープリターを使用できます。
170 python  debugging  emacs  ipython  pdb 

7
Python独自のデバッガー(PDB)内で複数行のステートメントを実行する方法
そのため、次のように記述してPythonスクリプトを実行し、その中でPythonのデバッガPDBを呼び出しています。 import ipdb; ipdb.set_trace() (iPythonのPDBバージョンですが、問題になるとは思いませんが、カラー出力にのみ使用します)。 ここで、デバッガーに到達したら、if句やforループなどの複数行のステートメントを実行したいのですが、 if condition: リターンキーを押すと、エラーメッセージが表示されます *** SyntaxError: invalid syntax (<stdin>, line 1) PDB内で複数行のステートメントを実行するにはどうすればよいですか?可能でない場合、if句またはforループを実行する方法はありますか?

10
iPythonノートブックでデバッグする正しい方法は何ですか?
私が知っているように、%debug magic1つのセル内でデバッグを行うことができます。 ただし、複数のセルにわたる関数呼び出しがあります。 例えば、 In[1]: def fun1(a) def fun2(b) # I want to set a breakpoint for the following line # return do_some_thing_about(b) return fun2(a) In[2]: import multiprocessing as mp pool=mp.Pool(processes=2) results=pool.map(fun1, 1.0) pool.close() pool.join 私が試したこと: %debugcell-1の1行目に設定してみました。ただし、cell-2を実行する前でも、すぐにデバッグモードに入ります。 %debugコードの直前に行を追加しようとしましたreturn do_some_thing_about(b)。しかし、コードは永久に実行され、停止することはありません。 ipythonノートブック内にブレークポイントを設定する正しい方法は何ですか?

5
pdbを終了してプログラムを続行させる方法は?
プログラムのデバッグにpdbモジュールを使用しています。どのようにしてpdbを終了し、プログラムを完了まで続行できるかを理解したいと思います。プログラムの実行には計算コストがかかるため、スクリプトが完了しない限り終了したくありません。continue動作しないようです。pdbを終了してプログラムを続行するにはどうすればよいですか?
111 python  pdb 

13
PythonコードにPDBブレークポイントを配置するより簡単な方法は?
ただ便利な質問です。Visual StudioやXCodeのようなIDEのデバッガーに少し甘やかされてきました。import pdb; pdb.set_trace()ブレークポイントを設定するために入力する必要があるのは少し不格好です(私は忘れてしまい、そのままにしておく可能性があるため、ファイルの先頭にpdbをインポートしたくない)。 IDEに表示されるように、Pythonコードにブレークポイントを設定する簡単な方法はありますか?
105 python  pdb 

4
名前がPDBコマンドと競合する変数を操作するにはどうすればよいですか?
私のコードは、良くも悪くも、1文字の変数(物理学のものなので、それらの文字は意味があります)と、私が頻繁にやり取りするNumPyのものでいっぱいです。 Pythonデバッガーを使用する場合、たとえば、の値を確認したい場合がありますn。ただし、をn<enter>押すと(n)ext、それがのPDBコマンドであり、優先度が高くなります。 print nそれを見て回避しますが、どうすれば設定できますか?
95 python  pdb 

4
nosetests --pdbオプションを使用してブレークポイントを設定する
nosetests --pdbエラーまたは失敗時に停止させてみましょうが、これは私のニーズには遅すぎます。実行中にコードをステップ実行すると、問題のある場所のデバッグに役立ちます。 ただし、nosetestsは、相対的なインポートに依存するテスト(つまり、パッケージ内のテスト)を許可するため、役立ちます。 テストを実行する前にブレークポイントを設定するにはどうすればよいですか?現在私は使用しています: python -m pdb /path/to/my/nosetests testfile.py このソリューションは適切ではありません。nosetestがpdb出力を妨害し、キーボードのコントロール(矢印キーなど)が壊れます。 import pdbを使用します。pdb.set_trace()は良い考えのように思えますが、nosetestsがpdbコンソールへのアクセスをブロックしています。
88 python  testing  nose  pdb 

5
pythonpdb-ループをスキップ
を使用してループをスキップするにはどうすればよいpdb.set_trace()ですか? 例えば、 pdb.set_trace() for i in range(5): print(i) print('Done!') pdbループの前にプロンプ​​トが表示されます。コマンドを入力します。1〜5の値がすべて返されます。実行するpdb前に、もう一度プロンプトが表示されprint('Done!')ます。
88 debugging  pdb 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.