回答:
はい!そのpdb
ためだけに呼び出されたPythonデバッガがあります。
またはpdb
を使用して、Pythonプログラムを起動できます。pdb myscript.py
python -m pdb myscript.py
その後、pdb
ページに記載されているいくつかのコマンドを発行できます。
覚えておくと便利なものは次のとおりです。
b
:ブレークポイントを設定c
:ブレークポイントに到達するまでデバッグを続行しますs
:コードをステップ実行n
:次のコード行に移動するl
:現在のファイルのソースコードをリストします(デフォルト:実行中の行を含む11行)u
:スタックフレームを上に移動d
:スタックフレームを下に移動するp
:現在のコンテキストで式の値を出力するコマンドラインデバッガーを使用しない場合は、Pydev、Wing IDE、またはPyCharmなどの一部のIDEにGUIデバッガーがあります。WingとPyCharmは商用製品ですが、Wingには無料の「パーソナル」エディションがあり、PyCharmには無料のコミュニティエディションがあります。
pudb
そのために素晴らしいです。またpydev
pdb
コマンドラインツールではありません。使用するには、を使用しますpython -m pdb your_script.py
。
pdb
コマンドはpython
パッケージの一部です。いずれにしても、python -m <module>
はのような他のものの標準になっているpip
ので、デフォルトでそれを使用するのがおそらく最善です。
最初のステップは、Pythonインタープリターをデバッグモードに切り替えることです。
A.コマンドラインから
コマンドラインから実行する、Pythonインタープリターの最も簡単な方法
$ python -m pdb scriptName.py
> .../pdb_script.py(7)<module>()
-> """
(Pdb)
B.通訳内
モジュールの初期バージョンを開発し、より反復的に実験する。
$ python
Python 2.7 (r27:82508, Jul 3 2010, 21:12:11)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pdb_script
>>> import pdb
>>> pdb.run('pdb_script.MyObj(5).go()')
> <string>(1)<module>()
(Pdb)
C.プログラム内から
大きなプロジェクトと長期実行モジュールの場合、次の ようにimport pdbとset_trace()を使用してプログラム内からデバッグを開始できます 。
#!/usr/bin/env python
# encoding: utf-8
#
import pdb
class MyObj(object):
count = 5
def __init__(self):
self.count= 9
def go(self):
for i in range(self.count):
pdb.set_trace()
print i
return
if __name__ == '__main__':
MyObj(5).go()
ステップバイステップのデバッグにより内部へ
次のステートメントを実行… 「n」(次へ)
最後のデバッグコマンドを繰り返す… ENTER
すべて終了する… 「q」(終了)
変数の値を出力する…“ p”(出力)
a) pa
(Pdb)プロンプトをオフにする… 「c」を押して(続行)
現在地を確認しています… 「l」(リスト)
サブルーチンにステップイン… “ s”で(ステップイン)
継続しています…しかし、現在のサブルーチンの終わりまで… "r"(リターン)
新しい値を割り当てる
a) !b = "B"
ブレークポイントを設定する
a) 改行番号
b) 関数名を壊す
c) ファイル名を改行する:行番号
一時的なブレークポイント
a) tbreak行番号
条件付きブレークポイント
a) ブレーク行番号、条件
注:**これらのコマンドはすべて** pdbから実行する必要があります
詳しい知識については、以下を参照してください。
https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/
Pythonには 'pdb'というモジュールがあります。あなたが行うPythonスクリプトの一番上で
import pdb
pdb.set_trace()
そしてデバッグモードに入ります。「s」を使用してステップを実行し、「n」を使用して「gdb」デバッガで実行するのと同様に次の行を実行できます。
Python 3.7以降では、breakpoint()
組み込み関数を使用してデバッガーに入ることができます。
foo()
breakpoint() # drop into the debugger at this point
bar()
デフォルトでbreakpoint()
は、がインポートされpdb
て呼び出されますpdb.set_trace()
。ただし、sys.breakpointhook()
環境変数を使用してデバッグ動作を制御できますPYTHONBREAKPOINT
。
詳細については、PEP 553を参照してください。
breakpoint
私は興奮していました。しかし、それは本質的にそれが単なるショートカットでimport pdb; pdb.set_trace()
あり、それが私を悲しくさせたことを学びました。Python開発者:コンテキスト行、永続的なコマンド履歴、タブの自動補完などの基本的なGDB機能でPDBを改善することに集中してください:-)
ipdbはIPython機能をpdbに追加し、次の大幅な改善を提供します。
pdgと同様に、ipdbは、GDBと比較した場合、まだ完全ではなく完全に初歩的ではありませんが、すでにpdbを大幅に改善しています。
使い方はと似ていますがpdb
、次のようにインストールするだけです。
python3 -m pip install --user ipdb
次に、ステップデバッグする行に追加します。
__import__('ipdb').set_trace(context=21)
エディタからショートカットを追加したいと思うかもしれません。たとえば、私が持っているVim snipmateの場合:
snippet ipd
__import__('ipdb').set_trace(context=21)
だから私はちょうどタイプすることができipd<tab>
、それはブレークポイントに拡張されます。その後dd
、すべてが1行に含まれているため、削除は簡単です。
context=21
で説明されているように、コンテキスト行の数を増やします。デバッグ中にipdbにコンテキストのより多くの行を表示させるにはどうすればよいですか?
または、最初からプログラムをデバッグすることもできます。
ipdb3 main.py
しかし、一般的には次の理由でそうしたくありません。
あるいは、raw pdb 3.2+のように、コマンドラインからいくつかのブレークポイントを設定できます。
ipdb3 -c 'b 12' -c 'b myfunc' ~/test/a.py
-c c
何らかの理由で壊れていますが:https : //github.com/gotcha/ipdb/issues/156
python -m module
デバッグは尋ねられました:コマンドラインからpython -mで実行されたPythonモジュールをデバッグする方法?そしてPython 3.7以降は以下で実行できます:
python -m pdb -m my_module
GDBと比較したpdbとipdbの両方の重大な欠落機能:
ipdb固有の問題:
Ubuntu 16.04、ipdb == 0.11、Python 3.5.2でテスト済み。
統合デバッガーを備えたIDEが必要な場合は、PyScripterを試してください。
https://wiki.python.org/moin/PythonDebuggingTools
pudbはpdbの優れた代替品です
Python Tutorは、初心者向けのオンラインシングルステップデバッガです。編集ページにコードを入力し、[実行の視覚化]をクリックして実行を開始できます。
特に、以下をサポートします。
io.StringIO
し、io.BytesIO
代わりに:デモプログラムによるpythonコードのステップ実行とトレースも可能です(そして簡単です!)。詳細については、sys.settrace()のドキュメントをご覧ください。また、開始するためのチュートリアルもあります。
PTVSを備えたVisual Studioはあなたのためのオプションかもしれません:http : //www.hanselman.com/blog/OneOfMicrosoftsBestKeptSecretsPythonToolsForVisualStudioPTVS.aspx
PyCharmは、デバッガーを含むPython用IDEです。PyCharmのデバッガーを使用してコードをステップ実行する方法の概要については、このYouTubeビデオをご覧ください。
PyCharmチュートリアル-PyCharmを使用してPythonコードをデバッグする
注:これは、推奨またはレビューを意図したものではありません。PyCharmは有料の商用製品ですが、同社は学生と教師に無料のライセンスを提供し、無料でオープンソースの「軽量」コミュニティバージョンも提供しています。