昨日はPythonを使ってシミュレーションを行いました。 変数とデバッグでいくつかの問題がありました。
まともなデバッガーを提供するPython用のソフトウェアはありますか?
関連質問: 私のデバッグPythonコード?
事後分析のデバッグを忘れないでください!例外がスローされた後、すべてのローカルを含むスタックフレームが_sys.last_traceback
_に含まれます。 pdb.pm()
を実行して、例外がスローされたスタックフレームに移動してからp(retty)p(rint) the locals()
を実行できます。
この情報を使用して、スタックからローカル変数を抽出する関数を次に示します。
_def findlocals(search, startframe=None, trace=False):
from pprint import pprint
import inspect, pdb
startframe = startframe or sys.last_traceback
frames = inspect.getinnerframes(startframe)
frame = [tb for (tb, _, lineno, fname, _, _) in frames
if search in (lineno, fname)][0]
if trace:
pprint(frame.f_locals)
pdb.set_trace(frame)
return frame.f_locals
_
使用法:
_>>> def screwyFunc():
a = 0
return 2/a
>>> screwyFunc()
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
screwyFunc()
File "<pyshell#55>", line 3, in screwyFunc
return 2/a
ZeroDivisionError: integer division or modulo by zero
>>> findlocals('screwyFunc')
{'a': 0}
_
Winpdb はプラットフォームに依存しないグラフィカルGPL Pythonデバッガーでリモートデバッグをサポートネットワーク、複数のスレッド、名前空間の変更、組み込みデバッグ、暗号化された通信で、pdbよりも最大20倍高速です。
特徴:
(ソース: winpdb.org )
pudb は、Python用のビジュアルデバッガです。
標準ライブラリに含まれているpython debugger pdb: http://docs.python.org/library/pdb.html を確認してください。
投稿 が示唆するように、いくつかのオプションがあります:
pdb:Pythonの組み込みデバッガー
pudb:GUIデバッガー
pydbgr:pydbデバッガーの書き直し
ipdb:iPythonのipdb
インタラクティブなデバッグには pydb および ipython をお勧めします。
どちらも showmedo.com でスクリーンキャストを利用できます
Komodo IDE (無料ではありません Komodo Edit )にはデバッガが付属しています。私は1年以上使用していませんが、当時は良かった(v 3、IIRC)。
デバッグにはPyCharmとWingIDEを使用しましたが、どちらも素晴らしいです。
PyCharmはかなりのRAM(Javaにあります)を使用しますが、それでも、それから実行しているdoctestをデバッグできるので、結局それを使用することになりました。
WindIDEはPythonで書かれています。Doctestを実行しないことを除いて、PyCharmよりも気に入っています。
また、私が成功しなかったスパイダーを試すこともできます。
提案については公式の Python wiki を参照してください。何か新しいものが出たときに通知を受け取るように更新してサブスクライブしてください。