次: , 前: Error Debugging, 上: Debugger


17.1.2 無限ループのデバッグ

プログラムが無限にループし戻ってこないときには、 まず、ループを停止する必要があります。 ほとんどのオペレーティングシステムでは、 中断を意味するC-gを使います。

普通に中断したのでは、 プログラムが無限ループした理由に関する情報は得られません。 より詳しい情報を得るには、 変数debug-on-quitnil以外を設定します。 C-gによる中断はエラーとは扱わないため、 C-gの処理に関してdebug-on-errorはなんの効果もありません。 同様に、debug-on-quitはエラーに関してなんの効果もありません。

無限ループの途中でデバッガを起動できれば、 デバッガでステップ実行コマンドを使って先へ進めます。 ループひとまわりをステップ実行すれば、 問題を解決するに十分な情報を得られるはずです。

— ユーザオプション: debug-on-quit

この変数は、quitが通知され処理されなかった場合に、 デバッガを呼び出すかどうかを決定する。 debug-on-quitnil以外である場合、 (C-gを打って)中断するとデバッガを呼び出す。 debug-on-quitnilであると、 中断してもデバッガを呼び出さない。 see Quitting