以下の内容はhttps://minus9d.hatenablog.com/entry/2020/03/24/213400より取得しました。


Python3でエラー発生時にデバッガを起動する


Python3のスクリプトを数時間動かしたあとにエラーで落ちるという経験はないでしょうか。エラーが発生したら pdb と呼ばれるデバッガが起動するようにしておくと、エラーの究明に役立ちます。

例えば、以下のような script.py があったとします。

def main():
    a = 10
    b = 0
    print(a / b)


main()

このスクリプト$ python3 script.py と普通に実行すると、以下のようにゼロ除算エラーが発生し、異常終了してしまいます。

$ python script.py
Traceback (most recent call last):
  File "script.py", line 7, in <module>
    main()
  File "script.py", line 4, in main
    print(a / b)
ZeroDivisionError: integer division or modulo by zero

ここで、

$ python3 -m pdb -c continue script.py

というふうに、-m pdb -c continue をつけてスクリプトを実行すると、以下のように、エラーが発生した地点でデバッガが起動します。

$ python3 -m pdb -c continue script.py
Traceback (most recent call last):
  File "/usr/lib/python3.6/pdb.py", line 1667, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib/python3.6/pdb.py", line 1548, in _runscript
    self.run(statement)
  File "/usr/lib/python3.6/bdb.py", line 434, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/user/script.py", line 1, in <module>
    def main():
  File "/home/user/script.py", line 4, in main
    print(a / b)
ZeroDivisionError: division by zero
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /home/user/script.py(4)main()
-> print(a / b)
(Pdb) 

あとは、pdbを使って自由に原因究明できます。

(Pdb) print(a)
10
(Pdb) print(b)
0



以上の内容はhttps://minus9d.hatenablog.com/entry/2020/03/24/213400より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14