13

私は python と pdb には比較的慣れていませんが、gdb には多くの経験があります。

私の問題は、ある時点でコードにいくつかのブレークポイントを設定すると、何かを変更して、これらのブレークポイントを保持したままデバッグ セッションを再実行したくなることです。ただし、pdb セッションで「run」と入力すると、セッションが次の出力で終了します。

(Pdb) run
  Traceback (most recent call last):
  File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File "/usr/lib64/python2.6/pdb.py", line 1319, in <module>
    pdb.main()
  File "/usr/lib64/python2.6/pdb.py", line 1312, in main
    pdb.interaction(None, t)
  File "/usr/lib64/python2.6/pdb.py", line 198, in interaction
    self.cmdloop()
  File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib64/python2.6/pdb.py", line 267, in onecmd
    return cmd.Cmd.onecmd(self, line)
  File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
    return func(arg)
  File "/usr/lib64/python2.6/pdb.py", line 661, in do_run
    raise Restart
pdb.Restart
]$

これを 2 つの独立した Linux プラットフォームで試しましたが、結果は同じでしたが、ドキュメントに修正が見つかりません。

4

3 に答える 3

2

異常な状態 (つまり、プログラムのバグ) に遭遇すると、pdb は次のように言ってくれます。

Uncaught exception. Entering post mortem debugging 
Running 'cont' or 'step' will restart the program

ここで、「run」または「restart」と入力すると、pdb プロセスが OP 状態として突然終了します (ただし、「cont」または「step」は約束どおりに再起動します)。

おそらく多くのせっかちな pythonistas は、「事後デバッグ」に入ったかどうかに関係なく、むしろ「実行」または「再起動」することを望んでいますが、既存の再起動セマンティクスは、よりクリーンな実装の副産物であると確信しています。

于 2016-03-03T22:07:59.440 に答える