---
title: Visual Studio Code のデバッグ機能
tags: 
author: [Takuya Nishimoto](https://www.docswell.com/user/nishimotz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/P7R242Q9J9.jpg?width=480
description: すごい広島 IT初心者の会 [81] 忘年会 2023-12-27  初演 PyCon mini Shizuoka 2021 西本卓也 @24motz / @nishimotz
published: December 28, 23
canonical: https://www.docswell.com/s/nishimotz/ZJLV4X-2023-12-28-142345
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/P7R242Q9J9.jpg)

Visual Studio Codeのデバッグ機能
2023-12-27
（初演 PyCon mini Shizuoka 2021）
西本卓也 @24motz / @nishimotz
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/PJXD2D53EX.jpg)

Visual Studio Code + Python 拡張
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/3JKXMX6NED.jpg)

デバッグ実行ボタン
使おうとすると設定が始まる
説明は省略
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LE35Y56ZJ5.jpg)

メニューとショートカット
• F5 : デバッグの開始
• Shift+F5 : デバッグの停止
• F9 : ブレークポイント
• F10 : ステップオーバー
• F11 : ステップイン
• Shift+F11 : ステップアウト
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/8EDD5DV4EG.jpg)

ブレークポイント
• 関数の実行を止めたいなら中身の1行目がブレークポイント
def fizzbuzz(num):
print(&#039;a&#039;)
ここは関数が呼ばれるたびに止まる
print(&#039;b&#039;)
print(&#039;c&#039;)
print(&#039;d&#039;)
return num
for num in range(1, 101):
fizzbuzz(num)
def の次にここがステップ実行される
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/V7PXGXVVE8.jpg)

ブレークポイントを設定
• 行番号の左をクリックして赤いマルをつける (またはF9キー)
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/2JVL6LZR7Q.jpg)

ブレークポイントで停止した状態
• 継続 / ステップオーバー / ステップイン / ステップアウト / 再起動 / 停止
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5EGXNX46JL.jpg)

デバッグコンソール
• 式を入力すると値を表示できる
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JQ8Q8G27P.jpg)

ウォッチ式
• 毎回デバッグコンソールで表示しなくても
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/K742N25PJ1.jpg)

条件ブレークポイント
• 通過回数（ヒットカウント）
• 評価式
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LJ1M5MWXEG.jpg)

ログメッセージ : 出力だけ行う
• 出力先はデバッグコンソール
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJW3536KJ2.jpg)

ステップオーバー
• 下の階層に入らないで1行ずつ実行
def fizzbuzz(num):
print(&#039;a&#039;)
print(&#039;b&#039;)
print(&#039;c&#039;)
print(&#039;d&#039;)
return num
for num in range(1, 101):
fizzbuzz(num)
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EZVNVYNJ3.jpg)

リスト内包表記
• ステップオーバーで何回止まる？
• 100回
[fizzbuzz(num) for num in range(1, 101)]
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/Y76585D9EV.jpg)

ステップイン
• 下の階層にどんどん入りながら1行ずつ実行
def fizzbuzz(num):
print(&#039;a&#039;)
print(&#039;b&#039;)
print(&#039;c&#039;)
print(&#039;d&#039;)
return num
for num in range(1, 101):
fizzbuzz(num)
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G75Y9Y3D74.jpg)

ステップアウト
• ひとつ上の階層に戻るまで実行
def fizzbuzz(num):
print(&#039;a&#039;)
print(&#039;b&#039;)
print(&#039;c&#039;)
print(&#039;d&#039;)
return num
for num in range(1, 101):
fizzbuzz(num)
上の階層で
1行分の処理が
終わった状態
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/9J2G2GKMJR.jpg)

組み合わせて使う例
• ブレークポイント設定 → デバッグ開始 → ステップ実行 → 継続
def fizzbuzz(num):
print(&#039;a&#039;)
print(&#039;b&#039;)
print(&#039;c&#039;)
print(&#039;d&#039;)
return num
for num in range(1, 101):
fizzbuzz(num)
1回目はステップインで
下の階層もステップ実行
2回目はステップオーバーして
下の階層に入らない
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/DEYVYVNPEM.jpg)

まとめ
• 言語が変わってもデバッガの作法は変わらないことが多い
17


