プログラムを一度書いて正常に実行できる確率は非常に低く、基本的には 1% を超えません。修正が必要なさまざまなバグが常に存在します。いくつかのバグは非常に単純です。エラー メッセージを見ればわかります。いくつかのバグは非常に複雑です。エラーが発生したときにどの変数が正しい値を持ち、どの変数が間違った値を持っているかを知る必要があります。したがって、次のことが必要です。プログラムをデバッグし、バグを修正するための手段の完全なセット。 Pythonのデバッグ方法については以下の記事で紹介していますので、ご参考になれば幸いです。
#方法 1: print
print を使用して、問題がある可能性のある変数を出力します。この方法は最も簡単です。残忍さが効果的です。# err.py def foo(s): n = int(s) print '>>> n = %d' % n return 10 / n def main(): foo('0') main()
$ python err.py >>> n = 0 Traceback (most recent call last): ... ZeropisionError: integer pision or modulo by zero
方法 2: アサート
表示を支援するために print が使用される場合は常に、代わりにアサーションを使用できます。
# err.py def foo(s): n = int(s) assert n != 0, 'n is zero!' return 10 / n def main(): foo('0')
$ python err.py Traceback (most recent call last): ... AssertionError: n is zero!
$ python -O err.py Traceback (most recent call last): ... ZeropisionError: integer pision or modulo by zero
方法 3: ロギング
print をロギングに置き換えることもできます。アサートと比較して、ロギングはエラーをスローせず、ファイルに出力できます。 :# err.py import logging s = '0' n = int(s) logging.info('n = %d' % n) print 10 / n
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 ZeropisionError: integer pision or modulo by zero
方法 4: デバッガー pdb
Python デバッガー pdb を起動し、プログラムをシングルステップ モードで実行すると、いつでも実行ステータスを確認できます。まずプログラムを準備します:# err.py s = '0' n = int(s) print 10 / n
$ python -m pdb err.py > /Users/michael/Github/sicp/err.py(2)<module>() -> s = '0'
(Pdb) l 1 # err.py 2 -> s = '0' 3 n = int(s) 4 print 10 / n [EOF]
(Pdb) n > /Users/michael/Github/sicp/err.py(3)<module>() -> n = int(s) (Pdb) n > /Users/michael/Github/sicp/err.py(4)<module>() -> print 10 / n
(Pdb) p s '0' (Pdb) p n 0
(Pdb) n ZeropisionError: 'integer pision or modulo by zero' > /Users/michael/Github/sicp/err.py(4)<module>() -> print 10 / n (Pdb) q
概要
プログラムの作成で最も面倒なことはデバッグです。プログラムが予期しないプロセスで実行されることがよくあり、実行されると予想したステートメントが実行されません。現時点ではデバッグが必要です。関連する学習に関する推奨事項:
以上がPythonをデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。