Параметры Edebug
Эти параметры влияют на поведение Edebug:
- Пользовательская опция: edebug-setup-hook
Функции, вызываемые перед использованием Edebug. Каждый раз, когда этой переменной присваивается новое значение, Edebug один раз вызывает эти функции, а затем сбрасывает
edebug-setup-hookвnil. Это можно использовать для загрузки спецификаций Edebug, связанных с используемым пакетом, но только при использовании Edebug. См. Инструментирование для Edebug.
- Пользовательская опция: edebug-all-defs
-
Если это значение не равно
nil, обычное вычисление форм определения, таких какdefunиdefmacro, инструментирует их для Edebug. Это относится кeval-defun,eval-regionиeval-buffer.Используйте команду M-x edebug-all-defs, чтобы переключить значение этого параметра. См. Инструментирование для Edebug.
- Пользовательская опция: edebug-all-forms
-
Если это значение не равно
nil, командыeval-defun,eval-regionиeval-bufferинструментируют все формы, даже те, которые ничего не определяют. Это не относится к загрузке и вычислению в минибуфере.Используйте команду M-x edebug-all-forms, чтобы переключить значение этого параметра. См. Инструментирование для Edebug.
- Пользовательская опция: edebug-eval-macro-args
Если это значение не равно
nil, все аргументы макросов будут инструментированы в сгенерированном коде. Для любого макроса объявлениеdebugимеет приоритет над этим параметром. Поэтому, чтобы указать исключения для макросов, у которых одни аргументы вычисляются, а другие нет, используйте объявлениеdebugдля указания спецификации формы Edebug.
- Пользовательская опция: edebug-save-windows
-
Если это значение не равно
nil, Edebug сохраняет и восстанавливает конфигурацию окон. Это занимает некоторое время, поэтому, если программа не зависит от изменений конфигурации окон, лучше установить этой переменной значениеnil. Также рекомендуется установить ей значениеnil, если значение по умолчанию приводит к тому, что Edebug перезаписывает позиции точки в буферах, задействованных в отлаживаемой программе, при сохранении и восстановлении конфигурации окон; это может произойти, если программа перемещает точку в одном или нескольких таких буферах. В этом случае можно также попробовать настроить параметрedebug-save-displayed-buffer-points, описанный ниже.Если значение
edebug-save-windowsявляется списком, сохраняются и восстанавливаются только указанные в нем окна.Для интерактивного изменения этой переменной в Edebug можно использовать команду W. См. Обновление отображения Edebug.
- Пользовательская опция: edebug-save-displayed-buffer-points
-
Если это значение не равно
nil, Edebug сохраняет и восстанавливает точку во всех отображаемых буферах.Сохранение и восстановление точки в других буферах необходимо при отладке кода, который меняет точку в буфере, отображаемом в невыбранном окне. Если затем Edebug или пользователь выберет это окно, точка в буфере переместится в положение точки, соответствующее значению окна.
Сохранение и восстановление точки во всех буферах требует значительных затрат, поскольку для этого необходимо дважды выбрать каждое окно, поэтому включайте этот параметр, только если он вам нужен. См. Обновление отображения Edebug.
- Пользовательская опция: edebug-initial-mode
-
Если значение этой переменной не равно
nil, оно задает начальный режим выполнения Edebug при его первом запуске. Возможные значения:step,next,go,Go-nonstop,trace,Trace-fast,continueиContinue-fast.Значение по умолчанию —
step. Эту переменную можно задать интерактивно с помощью C-x C-a C-m (edebug-set-initial-mode). См. Режимы выполнения Edebug.
- Пользовательская опция: edebug-trace
-
Если это значение не равно
nil, отслеживать вход и выход каждой функции. Вывод трассировки отображается в буфере с именем *edebug-trace*: одна запись о входе в функцию или выходе из нее на строку, с отступом, соответствующим уровню рекурсии.См. также
edebug-tracingв разделе Буфер трассировки.
- Пользовательская опция: edebug-test-coverage
Если значение не равно
nil, Edebug проверяет покрытие всех отлаживаемых выражений. См. Проверка покрытия.
- Пользовательская опция: edebug-continue-kbd-macro
Если значение не равно
nil, продолжать определение или выполнение любой клавиатурной макрокоманды, выполняемой за пределами Edebug. Используйте этот параметр осторожно, поскольку такая макрокоманда не отлаживается. См. Режимы выполнения Edebug.
- Пользовательская опция: edebug-print-length
Если значение не равно
nil, задает значение по умолчанию дляprint-lengthпри выводе результатов в Edebug. См. Переменные, влияющие на вывод.
- Пользовательская опция: edebug-print-level
Если значение не равно
nil, задает значение по умолчанию дляprint-levelпри выводе результатов в Edebug. См. Переменные, влияющие на вывод.
- Пользовательская опция: edebug-print-circle
Если значение не равно
nil, задает значение по умолчанию дляprint-circleпри выводе результатов в Edebug. См. Переменные, влияющие на вывод.
- Пользовательская опция: edebug-unwrap-results
-
Если значение не равно
nil, Edebug пытается удалить собственные инструментационные формы при отображении результатов выражений. Это имеет значение при отладке макросов, когда результаты выражений сами являются инструментированными выражениями. В качестве весьма искусственного примера предположим, что примерная функцияfacбыла инструментирована, и рассмотрим макрос следующего вида:(defmacro test () "Edebug example." (if (symbol-function 'fac) ...))Если инструментировать макрос
testи пошагово выполнить его, то по умолчанию результат вызоваsymbol-functionбудет содержать множество формedebug-afterиedebug-before, из-за чего фактический результат может быть трудно увидеть. Если значениеedebug-unwrap-resultsне равноnil, Edebug пытается удалить эти формы из результата.
- Пользовательская опция: edebug-on-error
Edebug привязывает
debug-on-errorк этому значению, если ранееdebug-on-errorимело значениеnil. См. Перехват ошибок.
- Пользовательская опция: edebug-on-quit
Edebug привязывает
debug-on-quitк этому значению, если ранееdebug-on-quitимело значениеnil. См. Перехват ошибок.
Если изменить значения edebug-on-error или edebug-on-quit во время работы Edebug, новые значения не будут использоваться, пока Edebug не будет вызван в следующий раз новой командой.
- Пользовательская опция: edebug-global-break-condition
Если значение не равно
nil, задает выражение, проверяемое в каждой точке останова. Если результат не равенnil, выполнение прерывается. Ошибки игнорируются. См. Глобальное условие останова.
- Пользовательская опция: edebug-sit-for-seconds
Количество секунд паузы при достижении точки останова, если режим выполнения — трассировка или продолжение. См. Режимы выполнения Edebug.
- Пользовательская опция: edebug-sit-on-break
Определяет, нужно ли приостанавливаться на
edebug-sit-for-secondsпри достижении точки останова. Установите значениеnil, чтобы отключить паузу, или значение, отличное отnil, чтобы разрешить ее.
- Пользовательская опция: edebug-behavior-alist
-
По умолчанию этот список ассоциаций содержит одну запись с ключом
edebugи списком из трех функций, являющихся реализациями по умолчанию функций, вставляемых в инструментированный код:edebug-enter,edebug-beforeиedebug-after. Чтобы изменить поведение Edebug глобально, измените запись по умолчанию.Поведение Edebug также можно изменять отдельно для каждого определения, добавив в этот список ассоциаций запись с выбранным вами ключом и тремя функциями. Затем установите свойство символа
edebug-behaviorдля инструментированного определения равным ключу новой записи, и для этого определения Edebug будет вызывать новые функции вместо собственных.
- Пользовательская опция: edebug-new-definition-function
Функция, выполняемая Edebug после оборачивания тела определения или замыкания. После инициализации собственных данных Edebug вызывает эту функцию с одним аргументом — символом, связанным с определением; это может быть фактически определенный символ или символ, созданный Edebug. Эту функцию можно использовать для установки свойства символа
edebug-behaviorдля каждого определения, инструментированного Edebug.
- Пользовательская опция: edebug-after-instrumentation-function
Чтобы проверить или изменить инструментирование Edebug до его использования, присвойте этой переменной функцию, принимающую один аргумент — инструментированную форму верхнего уровня — и возвращающую либо ту же форму, либо заменяющую ее форму, которую Edebug затем использует в качестве окончательного результата инструментирования.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Edebug-Options.html