LoginSignup
5
2

More than 5 years have passed since last update.

PEP 553 -- Built-in breakpoint()を試してみた

Last updated at Posted at 2018-07-02

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コマンドを打つことでも確認できる。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2