【でばっがー】
デバッガー とは?
💡 プログラムを「スロー再生で観察する道具」
📌 このページのポイント
print文を入れてデバッグするのと何が違うの?
print文は「思った場所にしか書かない」から、予想外の場所が原因だと気づきにくい。デバッガーは止めた時点の全変数を一覧で確認できるし、「あれ、この関数の呼び出し元はどこだ?」とコールスタックも追える。
どうやって使うの?
ステップインとステップオーバーって何?
関数を呼び出す行で「ステップイン」すると関数の中に入って一行ずつ追える。「ステップオーバー」は関数の中には入らずその行だけ実行して次へ進む。バグが関数の中にあるかどうか怪しいときはステップインで掘り下げる。
本番環境でデバッガーって使えるの?
基本的には使わない・使えない。本番でプログラムを止めたらサービスが止まる。本番で調査するにはログを充実させておいて、ログからバグの状況を推定するのが正攻法。ローカルや開発環境で同じ状況を再現してデバッガーで調べるのが安全。
まとめ:ざっくりこれだけ覚えればOK!
デバッガーって出てきたら「プログラムの動きをスロー再生して調査するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「debugger」 = バグを取り除くもの
💬 バグ(bug)を取り除く(de-bug)ツール。debugという言葉の由来は1947年にハーバードのコンピュータに実際に虫(moth)が入り込んだ事件とされる