Spec-Zone.ru › Elisp

Команды отладчика

Буфер отладчика (в режиме отладки) предоставляет специальные команды помимо обычных команд Emacs и команд режима Backtrace, описанных в предыдущем разделе. Самое важное применение команд отладчика — пошаговое выполнение кода, чтобы вы могли увидеть, как протекает управление. Отладчик может пошагово выполнять управляющие структуры интерпретируемой функции, но не может сделать это для байт-компилированной функции. Если вы хотите пошагово выполнить байт-компилированную функцию, замените её интерпретируемым определением той же функции. (Для этого перейдите к исходному коду функции и введите C-M-x в её определении.) Вы не можете использовать отладчик Lisp для пошагового выполнения примитивной функции.

Некоторые команды отладчика работают с текущей областью. Если область начинается со звёздочки, это означает, что выход из этой области снова вызовет отладчик. Это полезно для проверки значения возврата функции.

Вот список команд режима отладки:

c

Выйти из отладчика и продолжить выполнение. Это возобновляет выполнение программы так, как если бы отладчик никогда не входил в неё (кроме побочных эффектов, которые вы вызвали, изменив значения переменных или структуры данных во время работы отладчика).

d

Продолжить выполнение, но войти в отладчик в следующий раз, когда вызывается любая функция Lisp. Это позволяет вам пошагово выполнить подвыражения выражения, посмотреть, какие значения вычисляют подвыражения и что ещё они делают.

Кадр стека, созданный для вызова функции, который запускает отладчик таким образом, будет автоматически помечен, чтобы отладчик вызывался снова при выходе из кадра. Вы можете использовать команду u, чтобы отменить этот флаг.

b

Пометить текущую область, чтобы отладчик входил в неё при выходе из области. Области, помеченные таким образом, отмечаются звёздочками в буфере backtrace.

u

Не входить в отладчик при выходе из текущей области. Это отменяет команду b для этой области. Видимый эффект — удаление звёздочки из строки в буфере backtrace.

j

Пометить текущую область как b. Затем продолжить выполнение как c, но временно отключить перерыв на вход для всех функций, которые настроены на это с помощью debug-on-entry.

e

Прочитать выражение Lisp в минибуфере, оценить его (с соответствующей лексической средой, если применимо) и вывести значение в области эха. Отладчик изменяет некоторые важные переменные и текущий буфер в ходе своей работы; команда e временно восстанавливает их значения извне отладчика, чтобы вы могли их проверить и изменить. Это делает отладчик более прозрачным. В отличие от этого, M- не делает ничего особенного в отладчике; он показывает вам значения переменных внутри отладчика.

R

Как e, но также сохраняет результат оценки в буфере *Debugger-record*.

q

Прервать отлаживаемую программу; вернуться к выполнению команд Emacs верхнего уровня.

Если отладчик был запущен из-за C-g, но вы действительно хотите выйти, а не отлаживать, используйте команду q.

r

Возвратить значение из отладчика. Значение вычисляется путём чтения выражения в минибуфере и его оценки.

Команда r полезна, когда отладчик был вызван из-за выхода из кадра вызова Lisp (как запрошено с помощью b или при входе в кадр с помощью d); затем указанное в команде r значение используется как значение этого кадра. Также она полезна, если вы вызываете debug и используете его возвращаемое значение. В противном случае команда r имеет тот же эффект, что и c, а указанное возвращаемое значение не имеет значения.

Вы не можете использовать команду r, если отладчик был вызван из-за ошибки.

l

Отобразить список функций, которые вызовут отладчик при вызове. Это список функций, которые настроены на остановку на входе с помощью debug-on-entry.

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/Debugger-Commands.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API