プログラム内の任意の場所でpdbを起動する
Pythonのプログラムにimport pdb; pdb.set_trace()を埋め込んでおくと、そこでpdbが起動します。 code:set_trace.py
def double(n):
return n * 2
import pdb; pdb.set_trace()
double(3)
code:run.log
$ python set_trace.py
d:\...\set_trace.py(7)<module>()
-> double(3)
(Pdb) s
--Call--
d:\...\set_trace.py(2)double()
-> def double(n):
(Pdb) s
d:\...\set_trace.py(3)double()
-> return n * 2
(Pdb) p n
3
(Pdb) s
--Return--
d:\...\set_trace.py(3)double()->6
-> return n * 2
:
Python3.7以降であればbreakpoint()でも可能です。
普通の関数なので、一定の条件を満たしたときにデバッガに入る、というのも普通に書けます。
code:breakpoint.py
def sum_to(n):
sum = 0
for i in range(n):
if i == 3: breakpoint()
sum += i + 1
return sum
print(sum_to(4))
code:run.log
$ python breakpoint.py
d:\...\breakpoint.py(6)sum_to()
-> sum += i + 1
(Pdb) i
3
(Pdb) sum
6
(Pdb) s
d:\...\breakpoint.py(4)sum_to()
-> for i in range(n):
: