Режимы выполнения Edebug
Edebug поддерживает несколько режимов выполнения для запуска отлаживаемой программы. Мы называем эти альтернативы режимами выполнения Edebug; не путайте их с основными или дополнительными режимами. Текущий режим выполнения Edebug определяет, насколько далеко Edebug продолжает выполнение перед остановкой — останавливается ли он на каждой точке остановки или продолжает выполнение до следующей точки останова, например — и насколько подробно Edebug отображает ход выполнения до остановки.
Обычно вы указываете режим выполнения Edebug, набрав команду для продолжения программы в определенном режиме. Вот таблица этих команд; все, кроме S, возобновляют выполнение программы, по крайней мере, на определенное расстояние.
- S
-
Остановить: не выполнять больше программы, но ожидать дополнительных команд Edebug (
edebug-stop). - SPC
-
Шаг: остановить выполнение на следующей точке остановки (
edebug-step-mode). - n
-
Далее: остановить выполнение на следующей точке остановки после выражения (
edebug-next-mode). Также см.edebug-forward-sexpв Переходе. - t
-
Отлаживать: приостанавливать (обычно на одну секунду) в каждой точке остановки Edebug (
edebug-trace-mode). - T
-
Быстрое отслеживание: обновлять отображение в каждой точке остановки, но фактически не приостанавливать (
edebug-Trace-fast-mode). - g
-
Идти: выполнять до следующей точки останова (
edebug-go-mode). См. Точки останова. - c
-
Продолжить: приостанавливать на одну секунду в каждой точке останова, а затем продолжать (
edebug-continue-mode). - C
-
Быстрое продолжение: перемещаться к каждой точке останова, но не приостанавливать (
edebug-Continue-fast-mode). - G
Непрерывное выполнение: игнорировать точки останова (
edebug-Go-nonstop-mode). Вы по-прежнему можете остановить программу, набрав S или любую команду редактирования.
В общем случае, режимы выполнения, расположенные в начале приведенного выше списка, запускают программу медленнее или останавливаются раньше, чем режимы, расположенные в конце списка.
При переходе на новый уровень Edebug Edebug обычно останавливается на первой отслеживаемой функции, с которой встречается. Если вы предпочитаете останавливаться только на точке останова или вообще не останавливаться (например, при сборе данных о покрытии), измените значение edebug-initial-mode от значения по умолчанию step до go, или Go-nonstop, или одного из других значений (см. Параметры Edebug). Вы можете сделать это с помощью C-x C-a C-m (edebug-set-initial-mode):
- Команда: edebug-set-initial-mode
-
Эта команда, привязанная к C-x C-a C-m, устанавливает
edebug-initial-mode. Она запросит у вас ключ, указывающий режим. Вы должны ввести один из восьми ключей, указанных выше, что задаст соответствующий режим.
Обратите внимание, что вы можете несколько раз войти на один и тот же уровень Edebug, если, например, отслеживаемая функция вызывается несколько раз из одной команды.
Во время выполнения или отладки вы можете прервать выполнение, введя любую команду Edebug. Edebug останавливает программу в следующей точке остановки, а затем выполняет введенную вами команду. Например, ввод t во время выполнения переключает режим на режим отладки в следующей точке останова. Вы можете использовать S для остановки выполнения без выполнения других действий.
Если ваша функция считывает ввод, символ, который вы набираете, намереваясь прервать выполнение, может быть прочитан функцией вместо этого. Вы можете избежать таких непреднамеренных результатов, обращая внимание на то, когда ваша программа ожидает ввода.
Макросы клавиатуры, содержащие команды в этом разделе, не работают полностью: выход из Edebug для возобновления программы теряет информацию о макросе клавиатуры. Это нелегко исправить. Также определение или выполнение макроса клавиатуры вне Edebug не влияет на команды внутри Edebug. Это обычно выгодно. См. также параметр edebug-continue-kbd-macro в Параметры Edebug.
- Пользовательский параметр: edebug-sit-for-seconds
Этот параметр определяет, сколько секунд ждать между шагами выполнения в режиме отладки или режиме продолжения. Значение по умолчанию — 1 секунда.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Edebug-Execution-Modes.html