Next: Function Debugging, Previous: Error Debugging, Up: Debugger
プログラムが無限にループし戻ってこないときには、 まず、ループを停止する必要があります。 ほとんどのオペレーティングシステムでは、 中断を意味するC-gを使います。
普通に中断したのでは、
プログラムが無限ループした理由に関する情報は得られません。
より詳しい情報を得るには、
変数debug-on-quit
にnil
以外を設定します。
C-gによる中断はエラーとは扱わないため、
C-gの処理に関してdebug-on-error
はなんの効果もありません。
同様に、debug-on-quit
はエラーに関してなんの効果もありません。
無限ループの途中でデバッガを起動できれば、 デバッガでステップ実行コマンドを使って先へ進めます。 ループひとまわりをステップ実行すれば、 問題を解決するに十分な情報を得られるはずです。
この変数は、
quit
が通知され処理されなかった場合に、 デバッガを呼び出すかどうかを決定する。debug-on-quit
がnil
以外である場合、 (C-gを打って)中断するとデバッガを呼び出す。debug-on-quit
がnil
であると、 中断してもデバッガを呼び出さない。 see Quitting。