19.1.3 Отладка бесконечных циклов

Когда программа входит в бесконечный цикл и не возвращает управление, ваша первая проблема — остановить цикл. В большинстве операционных систем вы можете сделать это с помощью C-g, что вызывает quit. См. Выход.

Обычный выход не дает информации о том, почему программа зациклилась. Чтобы получить больше информации, вы можете установить переменную debug-on-quit в значение, отличное от nil. Как только вы запустите отладчик в середине бесконечного цикла, вы можете продолжить работу из отладчика, используя команды пошагового выполнения. Если вы пошагово пройдете весь цикл, вы можете получить достаточно информации для решения проблемы.

Выход с помощью C-g не считается ошибкой, и debug-on-error не влияет на обработку C-g. Точно так же, debug-on-quit не влияет на ошибки.

Пользовательский вариант: debug-on-quit

Эта переменная определяет, будет ли вызван отладчик, когда сигнализируется и не обрабатывается quit. Если debug-on-quit не равно nil, то отладчик вызывается при каждом выходе (то есть, при нажатии C-g). Если debug-on-quit равно nil (по умолчанию), то отладчик не вызывается при выходе.