【でばっがー】

デバッガー とは?

最終更新:
💡 プログラムを止めて、中の状態を観察する道具

プログラムを一時停止し、変数の値や関数の呼び出しを調べたり、少しずつ実行したりするツール。動作を確かめ、バグの原因を探るために使う。

📌 このページのポイント
止めた時点の状態を調べる ソースコードの例let total = 0;const price = 3500;total += price;← 実行する前return total;変数の値total = 0price = 3500呼び出し履歴calcTotal()checkout()ステップ実行後は total = 3500
加算する行の実行前に停止した例。変数と呼び出し元を調べ、処理を進めて変化を確かめます。表示できる情報は環境や設定によって変わります。
ひよこ ひよこ
print文を入れるのと何が違うの?
ペンギン先生 ペンギン先生
ログ出力は、書いた場所の情報を残す方法だね。デバッガーでは実行を止め、変数や関数の呼び出しをその場で調べられる。どちらが適しているかは状況次第で、組み合わせても使えるよ。
ひよこ ひよこ
どうやって止めるの?
ペンギン先生 ペンギン先生
VS Codeなら、実行できる行の左側をクリックしてブレークポイントを置く。対象に合うデバッガーや起動設定を用意してデバッグを開始し、その行に到達すると止まるよ。対応しない言語や行では、印を付けても止められないことがあるんだ。
ひよこ ひよこ
ステップインとステップオーバーって?
ペンギン先生 ペンギン先生
関数を呼ぶ行なら、ステップインはその関数の中へ進み、ステップオーバーは中を追わずに処理を進める操作だよ。止まる場所はデバッガーなどで変わるので、必ずソースの一行ずつになるとは限らないんだ。
ひよこ ひよこ
止めれば全部の変数が見えるの?
ペンギン先生 ペンギン先生
見える範囲は選択した関数の実行状態などに依存するよ。コンパイラーの最適化で変数が消え、見えないこともある。呼び出し履歴で調べる関数を選び、必要なデバッグ情報があるかも確かめよう。
ひよこ ひよこ
本番のサービスでも使える?
ペンギン先生 ペンギン先生
対応する環境なら利用できる場合はあるけれど、実行を止めると利用者に影響することがあるよ。まずログなどで状況を確認し、開発・検証環境で再現して調べる方法を考えよう。本番での利用は影響と運用上の手順を確認する必要があるね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「デバッガー」って出てきたら「プログラムを止めたり少しずつ動かしたりして、原因を調べるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「debugger」 = バグを取り除くための道具
💬 bugは不具合、debugは不具合を取り除くこと。debuggerはその調査を助ける道具の名前だよ

参考資料

← 用語集にもどる