デバッグしたい箇所に、「breakpoint()」か「import pdb; pdb.set_trace()」を書く
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def find_even_numbers(numbers): even_numbers = [] for number in numbers: if number % 2 == 0: even_numbers.append(number) return even_numbers def sum_even_numbers(numbers): even_numbers = find_even_numbers(numbers) total = sum(even_numbers) breakpoint() # ←これ return total # メイン処理 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] total_even = sum_even_numbers(numbers) print(f"The sum of even numbers is: {total_even}") |
この状態で、実行すると、対話式プロンプトが返り、処理がbreakpoint部分でストップする。
1 2 3 4 |
➜ pdb-test python3 app.py > /Users/yuta/vamdemic/pdb-test/app.py(13)sum_even_numbers() -> return total (Pdb) |
おそらくよく使うであろうコマンドを打っていきます。
p 変数を表示する
1 2 3 4 5 6 |
(Pdb) p numbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (Pdb) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (Pdb) p total 30 |
l 現在停止しているソースコードの部分を表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(Pdb) l 8 9 def sum_even_numbers(numbers): 10 even_numbers = find_even_numbers(numbers) 11 total = sum(even_numbers) 12 breakpoint() 13 -> return total 14 15 16 # メイン処理 17 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 18 total_even = sum_even_numbers(numbers) (Pdb) |
n 現在行を実行して、次の行へ進む
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
➜ pdb-test python3 app.py > /Users/yuta/vamdemic/pdb-test/app.py(13)sum_even_numbers() -> return total (Pdb) n --Return-- > /Users/yuta/vamdemic/pdb-test/app.py(13)sum_even_numbers()->30 -> return total (Pdb) n > /Users/yuta/vamdemic/pdb-test/app.py(19)<module>() -> print(f"The sum of even numbers is: {total_even}") (Pdb) n The sum of even numbers is: 30 --Return-- > /Users/yuta/vamdemic/pdb-test/app.py(19)<module>()->None -> print(f"The sum of even numbers is: {total_even}") (Pdb) n |
c 次のブレークポイントまで実行(今回の場合、ブレークポイントは1回しか通らないので、再就業まで実行)
1 2 3 4 5 |
➜ pdb-test python3 app.py > /Users/yuta/vamdemic/pdb-test/app.py(13)sum_even_numbers() -> return total (Pdb) c The sum of even numbers is: 30 |