3

複数の引数で 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.

質問:

  1. ブレークポイントで動作するように、vim python-mode をより適切に構成できますか?
  2. 「デバッグスクリプト」を実行する方法、または複数の引数で pdb を開始する方法を知っていますか? おまけの質問:
  3. プラグインに代わるものはありますvdebugか?
4

1 に答える 1