Python3.7の新機能、breakpoint関数を試してみた。
PEP 553 -- Built-in breakpoint() | Python.org
breakpoint関数を呼び出した時点でデバッガになる。
for i in range(5):
print(i)
breakpoint()
上記の実行例。
変数の値を見たり、continueで次に進める。
C:\Users\xxx\PycharmProjects\python3_7\venv\Scripts\python.exe C:/Users/xxx/PycharmProjects/python3_7/break_test.py
0
> c:\users\xxx\pycharmprojects\python3_7\break_test.py(2)<module>()
-> for i in range(5):
(Pdb) continue
1
> c:\users\xxx\pycharmprojects\python3_7\break_test.py(2)<module>()
-> for i in range(5):
(Pdb) i
1
(Pdb) continue
2
> c:\users\xxx\pycharmprojects\python3_7\break_test.py(2)<module>()
-> for i in range(5):
(Pdb) i
2
(Pdb)
環境変数のPYTHONBREAKPOINTに0を設定することで、デバッガを無効にできる。
また、PYTHONBREAKPOINTに実行する関数を設定することもできる。
def break_func():
print('break!')
if __name__ == '__main__':
for i in range(5):
print(i)
breakpoint()
PYTHONBREAKPOINTにbreak_test.break_funcを設定すると、breakpoint呼び出しでbreak_func関数が実行される。
以下、実行結果。
C:\Users\xxx\PycharmProjects\python3_7\venv\Scripts\python.exe C:/Users/xxx/PycharmProjects/python3_7/break_test.py
0
break!
1
break!
2
break!
3
break!
4
break!
Process finished with exit code 0
環境変数を使わずに、以下で関数を指定することも可能。
import sys
sys.breakpointhook = break_func
なお、デバッガでどういったコマンドが使えるかは、以下を実行すると確認できる。
import pdb
pdb.help()
またはデバッガでhelpコマンドを打つことでも確認できる。