複数の引数で pdb を起動する方法があるかどうか疑問に思っていました。
現在、私はこれを行うことができることを知っています:
python -m pdb script.py
次に、ブレークポイントを手動でセットアップします。
(Pdb) break
(Pdb) break 2
Breakpoint 1 at /home/ozn/test2.py:2
(Pdb) break 3
Breakpoint 2 at /home/ozn/test2.py:3
(Pdb) break
挿入することもできます:
pdb.set_trace() (or with ipdb.set_trace()
さまざまな行で(vimのpython-modeなどによって緩和されます)。ただし、そのアプローチを取ると、たとえば
# note: break points from python-mode in vim
print "hello "
a = 1
import ipdb; ipdb.set_trace() # XXX BREAKPOINT
a =+1
import ipdb; ipdb.set_trace() # XXX BREAKPOINT
print a
i = 9
break
内部にある場合、コマンドで持っているすべてのブレークポイントを一覧表示することはできませんpdb
。次に例を示します。ファイルを実行すると、出力が生成され、pdb
セッションに切り替わりますが、コマンドbreak
は空です:
[2] ozn@deboz:~ $ python 1.py
hello
> /home/ozn/1.py(4)<module>()
3 import ipdb; ipdb.set_trace() # XXX BREAKPOINT
----> 4 a =+1
5 import ipdb; ipdb.set_trace() # XXX BREAKPOINT
ipdb> list
1 print "hello "
2 a = 1
3 import ipdb; ipdb.set_trace() # XXX BREAKPOINT
----> 4 a =+1
5 import ipdb; ipdb.set_trace() # XXX BREAKPOINT
6 print a
7
8 i = 9
ipdb> break
ipdb>
理想的には、次のように pdb を開始したいと思います。
python -m pdb script.py b 2 b 3
の中にある場合、プロンプトは次のようにする必要があります。
(Pdb) break
(Pdb) break 2
Breakpoint 1 at /home/ozn/test2.py:2
(Pdb) break 3
Breakpoint 2 at /home/ozn/test2.py:3
(Pdb) break
vim
または、いくつかのブレークポイントを使用して Python モードを実行しているときに、スクリプトを内部から実行できれば幸いです。今のところ、ハングアップしています。つまり、コードにブレークポイントがあるときに押す<lead>r
と、ハングするか、せいぜい次のようなゴミが生成されます。
~
~
~
~
~
~
~
Code running.> /home/ozn/1.py(4)<module>()
3 import ipdb; ipdb.set_trace() # XXX BREAKPOINT
----> 4 a =+1
5 import ipdb; ipdb.set_trace() # XXX BREAKPOINT
ipdb>
ブレークポイントを に設定するとimport pdb; pdb.set_trace()
、vim が完全にハングし、次のメッセージが表示されます。
Code running.
質問:
- ブレークポイントで動作するように、vim python-mode をより適切に構成できますか?
- 「デバッグスクリプト」を実行する方法、または複数の引数で pdb を開始する方法を知っていますか? おまけの質問:
- プラグインに代わるものはあります
vdebug
か?