JavaScript | VSCode のデバッガコンソールで式を評価して調べる方法

JavaScript JavaScript
スポンサーリンク

ここでは 非同期処理(async/await)+例外(throw)+デバッガコンソール を組み合わせて、
「どこでエラーが起きたか」「変数の値がどう変わったか」をステップ実行で追跡する手順を作ります。


1. サンプルコード準備

📄 async_debug.js

async function fetchData(id) {
  console.log("fetchData開始:", id);

  // idが負の場合はエラーを投げる
  if (id < 0) {
    throw new Error(`無効なID: ${id}`);
  }

  // 模擬的な非同期処理
  const data = await new Promise(resolve => {
    setTimeout(() => resolve({id, name: "Alice"}), 500);
  });

  console.log("fetchData完了:", data);
  return data;
}

async function main() {
  try {
    const result1 = await fetchData(1);    // 正常ケース
    const result2 = await fetchData(-5);   // エラーケース
    console.log("結果:", result1, result2);
  } catch (e) {
    console.error("捕捉された例外:", e.message);
    throw e; // さらに上位に投げる
  }
}

main();
JavaScript

2. VSCode 停止ポイントの設定

  • fetchData 関数内の最初の console.log("fetchData開始:", id);ブレークポイント
  • if (id < 0) の直前にもブレークポイント
  • main()await fetchData(-5) にもブレークポイント

3. デバッグ開始

  1. 「実行とデバッグ」→ Launch Program → ▶
  2. 最初のブレークポイントでプログラムが停止

4. デバッガコンソールの使い方

ブレークポイントで停止した状態で、デバッガコンソールに入力します:

id

→ 現在の id の値を確認

id * 10

→ 計算式も確認できる

typeof data

undefined(まだ非同期処理は完了していない)


重要ポイント:await の前後で確認

  1. await の前
data

→ undefined

  1. await の後(Step Over してタイマー完了後)
data

{ id: 1, name: "Alice" } と確認できる


5. エラー発生時の確認

  • fetchData(-5) でエラーが発生
  • ブレークポイントで止めた状態でデバッガコンソールに
e
e.message
e.stack
  • e.stack を見ると どの関数・どの行で throw が発生したか が分かります
  • ステップ実行しながら main()catch ブロックに入るまで追跡可能

6. デバッグの流れまとめ

  1. ブレークポイントで停止
  2. デバッガコンソールで変数や式を評価
  3. Step Over / Step Into で1行ずつ進める
  4. await 前後で変数の値を比較(非同期処理の理解)
  5. 例外が投げられた場所を stack で確認
  6. 必要に応じて変数を書き換えて挙動をテスト

7. コツ・ポイント

  • async 関数内でも ブレークポイントは普通に効く
  • デバッガコンソールでは 非同期完了前の変数は undefined に注意
  • e.stack を確認すると、Promiseチェーンや async/await の呼び出し経路が追える
  • Step Over / Into と組み合わせると、非同期処理の流れを視覚的に追跡できる
タイトルとURLをコピーしました