26

Eclipse (および他のいくつかの IDE も同様) には、一定数のヒット後にのみブレークポイントをオンにするオプションがあります。Pythonpdbには、ブレークポイントのヒット カウントとconditionコマンドがあります。それらを接続するにはどうすればよいですか?

4

2 に答える 2

21

私は答えを見つけました。実際には非常に簡単ignoreです。1000 ヒット後に 9 行目のブレークポイントでブレークしたいというコマンドがあります。

b 9

出力:Breakpoint 2 at ...

ignore 1 1000

出力:Will ignore next 1000 crossings of breakpoint 1.

 c
于 2013-01-03T13:59:18.867 に答える
20

条件付きブレークポイントは2つの方法で設定できます-

FIRST:を使用してブレークポイントが設定されるときの条件を指定しますbreak

python -m pdb pdb_break.py
> .../pdb_break.py(7)<module>()
-> def calc(i, n):
(Pdb) break 9, j>0
Breakpoint 1 at .../pdb_break.py:9

(Pdb) break
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at .../pdb_break.py:9
        stop only if j>0

(Pdb) continue
i = 0
j = 0
i = 1
> .../pdb_break.py(9)calc()
-> print 'j =', j

(Pdb)

2番目:コマンドを使用して、既存のブレークポイントに条件を適用することもできますcondition。引数はブレークポイントIDと式です。

$ python -m pdb pdb_break.py
> .../pdb_break.py(7)<module>()
-> def calc(i, n):
(Pdb) break 9
Breakpoint 1 at .../pdb_break.py:9

(Pdb) break
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at .../pdb_break.py:9

(Pdb) condition 1 j>0

(Pdb) break
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at .../pdb_break.py:9
        stop only if j>0

(Pdb)

ソース

更新:私はより単純なコードを書きました

import pdb; pdb.set_trace()
for i in range(100):
    print i

端末でのデバッグ-

$ python 1.py 
> /code/python/1.py(3)<module>()
-> for i in range(100):
(Pdb) l
  1     
  2     import pdb; pdb.set_trace()
  3  -> for i in range(100):
  4         print i
[EOF]
(Pdb) break 4, i==3
Breakpoint 1 at /code/python/1.py:4
(Pdb) break
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at /code/python/1.py:4
    stop only if i==3
(Pdb) c
0
1
2
> /Users/srikar/code/python/1.py(4)<module>()
-> print i
(Pdb) p i
3
于 2013-01-03T13:28:57.740 に答える