web-dev-qa-db-ja.com

別のモジュールにブレークポイントを設定する方法(関数の実行開始時にブレークしたい場合は、関数定義行に設定しないでください)

「another_module」の356行目で関数「broken_function」を呼び出すモジュール「main」をデバッグしようとしています。その関数でエラーが発生し、その開始点にブレークポイントを設定したいと思います。以下はリストです。私は何か間違ったことをしていますか?原因、ブレークポイントが機能しません。

$ python -m pdb main
(Pdb) import sys
(Pdb) sys.path.append("/home/user/path/to/another/module")
(Pdb) import another_module
(Pdb) b another_module:356
Breakpoint 1 at /home/user/path/to/another/module/another_module.py:356
(Pdb) c
Traceback (most recent call last):
...
File "/home/user/path/to/another/module/another_module.py", line 383, in broken_function
f=open("../jobs/temptree.tre", "r")
IOError: [Errno 2] No such file or directory: '../jobs/temptree.tre'
Uncaught exception. Entering post mortem debugging
...
35
Boris Burkov

ブレークポイントを正しく設定しています。中断しているコード行が呼び出されないため、停止していないと思います。 383行目に改行を入れます。

21
Riaz Rizvi

sysanother_moduleをインポートすることなく、ファイルと行番号で直接ブレークポイントを設定することもできます。

(Pdb) b /home/user/path/to/another/module/another_module.py:383
Breakpoint 1 at /home/user/path/to/another/module/another_module.py:383

他の人が指摘しているように、/home/user/path/to/another/module/another_module.pyをインポートする必要があり、行383が実行可能であり、実行パスが壊れていることに注意してください。

さらにヘルプが必要な場合は、help bと入力して(または、helpの後に他のコマンドを入力して)、そのコマンドの詳細情報を取得します。

4
user650654