web-dev-qa-db-ja.com

Pythonデバッグツールの提案?

昨日は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}
_
18
aoeu256

Winpdbプラットフォームに依存しないグラフィカルGPL Pythonデバッガーでリモートデバッグをサポートネットワーク、複数のスレッド、名前空間の変更、組み込みデバッグ、暗号化された通信で、pdbよりも最大20倍高速です。

特徴:

  • GPLライセンス。 Winpdbはフリーソフトウェアです。
  • CPython 2.3から2.6およびPython 3000と互換性があります。
  • WxPython 2.6〜2.8と互換性があります
  • プラットフォームに依存せず、Ubuntu GutsyとWindows XPでテストされています。
  • ユーザーインターフェイス:rpdb2はコンソールベースですが、winpdbにはwxPython 2.6以降が必要です。

Screenshot
(ソース: winpdb.org

31
nosklo

pudb は、Python用のビジュアルデバッガです。

pudb screenshot

27
miku

標準ライブラリに含まれているpython debugger pdb: http://docs.python.org/library/pdb.html を確認してください。

11
sykora

投稿 が示唆するように、いくつかのオプションがあります:

  • pdb:Pythonの組み込みデバッガー pdb

  • pudb:GUIデバッガー pudb

  • pydbgr:pydbデバッガーの書き直し pydbgrb

  • ipdb:iPythonのipdb ipdb

11
cizixs

インタラクティブなデバッグには pydb および ipython をお勧めします。

どちらも showmedo.com でスクリーンキャストを利用できます

8
Ryan

Komodo IDE (無料ではありません Komodo Edit )にはデバッガが付属しています。私は1年以上使用していませんが、当時は良かった(v 3、IIRC)。

6

デバッグにはPyCharmとWingIDEを使用しましたが、どちらも素晴らしいです。

PyCharmはかなりのRAM(Javaにあります)を使用しますが、それでも、それから実行しているdoctestをデバッグできるので、結局それを使用することになりました。

WindIDEはPythonで書かれています。Doctestを実行しないことを除いて、PyCharmよりも気に入っています。

また、私が成功しなかったスパイダーを試すこともできます。

3
Mark Horvath

Python用のEclipseプラグインがあり、これは他のツールの中でもデバッグをサポートします。 チュートリアル から始めて、 Website を参照してください=ダウンロード用です。もちろん、 Eclipse も取得する必要があります。

3
Leonid

提案については公式の Python wiki を参照してください。何か新しいものが出たときに通知を受け取るように更新してサブスクライブしてください。

2