252 Views
December 28, 23
スライド概要
すごい広島 IT初心者の会 [81] 忘年会
2023-12-27
初演 PyCon mini Shizuoka 2021
西本卓也 @24motz / @nishimotz
Shuaruta Inc. ウェブアクセシビリティ基盤委員会 (WAIC) NVDA日本語版 すごい広島 with Python
Visual Studio Codeのデバッグ機能 2023-12-27 (初演 PyCon mini Shizuoka 2021) 西本卓也 @24motz / @nishimotz 1
Visual Studio Code + Python 拡張 2
デバッグ実行ボタン 使おうとすると設定が始まる 説明は省略 3
メニューとショートカット • F5 : デバッグの開始 • Shift+F5 : デバッグの停止 • F9 : ブレークポイント • F10 : ステップオーバー • F11 : ステップイン • Shift+F11 : ステップアウト 4
ブレークポイント • 関数の実行を止めたいなら中身の1行目がブレークポイント def fizzbuzz(num): print('a') ここは関数が呼ばれるたびに止まる print('b') print('c') print('d') return num for num in range(1, 101): fizzbuzz(num) def の次にここがステップ実行される 5
ブレークポイントを設定 • 行番号の左をクリックして赤いマルをつける (またはF9キー) 6
ブレークポイントで停止した状態 • 継続 / ステップオーバー / ステップイン / ステップアウト / 再起動 / 停止 7
デバッグコンソール • 式を入力すると値を表示できる 8
ウォッチ式 • 毎回デバッグコンソールで表示しなくても 9
条件ブレークポイント • 通過回数(ヒットカウント) • 評価式 10
ログメッセージ : 出力だけ行う • 出力先はデバッグコンソール 11
ステップオーバー • 下の階層に入らないで1行ずつ実行 def fizzbuzz(num): print('a') print('b') print('c') print('d') return num for num in range(1, 101): fizzbuzz(num) 12
リスト内包表記 • ステップオーバーで何回止まる? • 100回 [fizzbuzz(num) for num in range(1, 101)] 13
ステップイン • 下の階層にどんどん入りながら1行ずつ実行 def fizzbuzz(num): print('a') print('b') print('c') print('d') return num for num in range(1, 101): fizzbuzz(num) 14
ステップアウト • ひとつ上の階層に戻るまで実行 def fizzbuzz(num): print('a') print('b') print('c') print('d') return num for num in range(1, 101): fizzbuzz(num) 上の階層で 1行分の処理が 終わった状態 15
組み合わせて使う例 • ブレークポイント設定 → デバッグ開始 → ステップ実行 → 継続 def fizzbuzz(num): print('a') print('b') print('c') print('d') return num for num in range(1, 101): fizzbuzz(num) 1回目はステップインで 下の階層もステップ実行 2回目はステップオーバーして 下の階層に入らない 16
まとめ • 言語が変わってもデバッガの作法は変わらないことが多い 17