前回の記事では、Python でデバッグが必要な理由を学び、Python のデバッグ方法を 2 つ紹介しましたが、デバッグ方法は 1 つの記事では説明しきれないため、この記事で説明します。残りの 2 つのデバッグ方法。これらのデバッグ方法がお役に立ち、Python の学習をより早く進めるのに役立つことを願っています。
logging
3 番目の方法は、print() を logging に置き換えることです。assert と比較して、logging はエラーをスローせず、ファイルに出力できます。 :
import logging s = '0' n = int(s) logging.info('n = %d' % n) print(10 / n)
logging.info() はテキストを出力できます。実行しても、ZeroDivisionError 以外の情報は見つかりません。どうしたの?
心配しないでください。ログをインポートした後に構成の行を追加して、もう一度お試しください:
import logging logging.basicConfig(level=logging.INFO)
出力を参照してください:
$ python err.py INFO:root:n = 0 Traceback (most recent call last): File "err.py", line 8, in <module> print(10 / n) ZeroDivisionError: division by zero
これはログの利点であり、これにより次のことが可能になります。レコードを指定します。情報のレベルには、デバッグ、情報、警告、エラーなどが含まれます。level=INFO を指定すると、logging.debug は機能しません。同様に、level=WARNING を指定すると、debug と info が機能しなくなります。このようにして、さまざまなレベルの情報を削除せずに安全に出力でき、最終的にどのレベルの情報を出力するかを制御できます。
ロギングのもう 1 つの利点は、簡単な構成で、ステートメントをコンソールやファイルなどの異なる場所に同時に出力できることです。
pdb
4 番目の方法は、Python デバッガー pdb を起動し、プログラムをシングルステップ モードで実行します。いつでも実行ステータスを確認できます。まずプログラム
# err.py s = '0' n = int(s) print(10 / n)
を準備してから開始します:
$ python -m pdb err.py > /Users/michael/Github/learn-python3/samples/debug/err.py(2)<module>() -> s = '0'
パラメーター -m pdb で開始した後、pdb は次に実行されるコードを見つけます -> s = ' 0' 。コードを表示するには、コマンド l を入力します:
(Pdb) l 1 # err.py 2 -> s = '0' 3 n = int(s) 4 print(10 / n)
コマンド n を入力して、コードをステップ実行します:
(Pdb) n > /Users/michael/Github/learn-python3/samples/debug/err.py(3)<module>() -> n = int(s) (Pdb) n > /Users/michael/Github/learn-python3/samples/debug/err.py(4)<module>() -> print(10 / n)
コマンド p 変数名を入力すると、いつでも変数を表示できます:
(Pdb) p s '0' (Pdb) p n 0
コマンド q を入力してデバッグを終了し、プログラムを終了します。
(Pdb) q
(pdb を使用してコマンド ラインでデバッグするこの方法は理論的には万能ですが、実際には非常に面倒です)
今回の記事は以上です この記事では、記事に記載されている内容のうち、Python デバッグ に関する関連知識を中心に紹介していますので、上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。
関連知識の詳細については、php 中国語 Web サイトの Python チュートリアル 列を参照してください。
以上がPython デバッグ: ロギングと PDB (分析例 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。