Next: , Previous: , Up: Lispデバッガ   [Contents][Index]


19.1.2 無限ループのデバッグ

プログラムが無限にループしてリターンできないとき、最初の問題はそのループをいかに停止するかです。ほとんどのオペレーティングシステムでは、(quitさせる)C-gでこれを行うことができます。quitを参照してください。

普通のquitでは、なぜそのプログラムがループしたかについての情報は与えられません。変数debug-on-quitに非nilをセットすることにより、より多くの情報を得ることができます。無限ループの途中でデバッガを実行すれば、デバッガからステップコマンドで先へ進むことができます。ループ全体をステップで追えば、問題を解決するために十分な情報が得られるでしょう。

C-gによるquitはエラーとは判断されないので、C-gのハンドルにdebug-on-errorは効果がありません。同じようにdebug-on-quitはエラーにたいして効果がありません。

User Option: debug-on-quit

この変数はquitがシグナルされて、それがハンドルされていないときにデバッガを呼び出すかどうかを決定する。debug-on-quitが非nilなら、quit(つまりC-gをタイプ)したときは常にデバッガが呼び出される。debug-on-quitnil(デフォルト)なら、quitしてもデバッガは呼び出されない。