【でばっがー】
デバッガー とは?
最終更新:
💡 プログラムを止めて、中の状態を観察する道具
プログラムを一時停止し、変数の値や関数の呼び出しを調べたり、少しずつ実行したりするツール。動作を確かめ、バグの原因を探るために使う。
📌 このページのポイント
- ブレークポイントで実行を止め、その時点の状態を調べる
- ステップ実行で処理を進め、変数の値の変化を確かめる
- 呼び出し履歴をたどり、どの関数から来たかを調べる
- 利用できる機能や見える変数は、言語・デバッガー・ビルド設定などで変わる
print文を入れるのと何が違うの?
ログ出力は、書いた場所の情報を残す方法だね。デバッガーでは実行を止め、変数や関数の呼び出しをその場で調べられる。どちらが適しているかは状況次第で、組み合わせても使えるよ。
どうやって止めるの?
ステップインとステップオーバーって?
関数を呼ぶ行なら、ステップインはその関数の中へ進み、ステップオーバーは中を追わずに処理を進める操作だよ。止まる場所はデバッガーなどで変わるので、必ずソースの一行ずつになるとは限らないんだ。
止めれば全部の変数が見えるの?
見える範囲は選択した関数の実行状態などに依存するよ。コンパイラーの最適化で変数が消え、見えないこともある。呼び出し履歴で調べる関数を選び、必要なデバッグ情報があるかも確かめよう。
本番のサービスでも使える?
対応する環境なら利用できる場合はあるけれど、実行を止めると利用者に影響することがあるよ。まずログなどで状況を確認し、開発・検証環境で再現して調べる方法を考えよう。本番での利用は影響と運用上の手順を確認する必要があるね。
まとめ:ざっくりこれだけ覚えればOK!
「デバッガー」って出てきたら「プログラムを止めたり少しずつ動かしたりして、原因を調べるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「debugger」 = バグを取り除くための道具
💬 bugは不具合、debugは不具合を取り除くこと。debuggerはその調査を助ける道具の名前だよ