ここでは 非同期処理(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();
JavaScript2. VSCode 停止ポイントの設定
fetchData関数内の最初のconsole.log("fetchData開始:", id);に ブレークポイントif (id < 0)の直前にもブレークポイントmain()のawait fetchData(-5)にもブレークポイント
3. デバッグ開始
- 「実行とデバッグ」→
Launch Program→ ▶ - 最初のブレークポイントでプログラムが停止
4. デバッガコンソールの使い方
ブレークポイントで停止した状態で、デバッガコンソールに入力します:
id
→ 現在の id の値を確認
id * 10
→ 計算式も確認できる
typeof data
→ undefined(まだ非同期処理は完了していない)
重要ポイント:await の前後で確認
awaitの前
data
→ undefined
awaitの後(Step Over してタイマー完了後)
data
→ { id: 1, name: "Alice" } と確認できる
5. エラー発生時の確認
fetchData(-5)でエラーが発生- ブレークポイントで止めた状態でデバッガコンソールに
e
e.message
e.stack
e.stackを見ると どの関数・どの行で throw が発生したか が分かります- ステップ実行しながら
main()でcatchブロックに入るまで追跡可能
6. デバッグの流れまとめ
- ブレークポイントで停止
- デバッガコンソールで変数や式を評価
- Step Over / Step Into で1行ずつ進める
- await 前後で変数の値を比較(非同期処理の理解)
- 例外が投げられた場所を stack で確認
- 必要に応じて変数を書き換えて挙動をテスト
7. コツ・ポイント
- async 関数内でも ブレークポイントは普通に効く
- デバッガコンソールでは 非同期完了前の変数は
undefinedに注意 e.stackを確認すると、Promiseチェーンや async/await の呼び出し経路が追える- Step Over / Into と組み合わせると、非同期処理の流れを視覚的に追跡できる

