Next: Function Debugging, Previous: Error Debugging, Up: Debugger [Contents][Index]
プログラムが無限にループしてリターンできないとき、最初の問題はそのループをいかに停止するかです。ほとんどのオペレーティングシステムでは、(quitさせる)C-gでこれを行うことができます。Quittingを参照してください。
普通のquitでは、なぜそのプログラムがループしたかについての情報は与えられません。変数debug-on-quit
に非nil
をセットすることにより、より多くの情報を得ることができます。無限ループの途中でデバッガを実行すれば、デバッガからステップコマンドで先へ進むことができます。ループ全体をステップで追えば、問題を解決するために十分な情報が得られるでしょう。
C-gによるquitはエラーとは判断されないので、C-gのハンドルにdebug-on-error
は効果がありません。同じように、debug-on-quit
はエラーにたいして効果がありません。
この変数は、quit
がシグナルされ、それがハンドルされていないときに、デバッガを呼び出すかどうかを決定します。debug-on-quit
が非nil
の場合は、quit(つまりC-gをタイプ)したときは常にデバッガが呼び出されます。debug-on-quit
がnil
(デフォルト)の場合は、quitしてもデバッガは呼び出されません。