Стек-трейсы
Режим отладчика основан на режиме Стек-трейса, который также используется для отображения стеков вызовов в Edebug и ERT. (см. Edebug и руководство по ERT в ERT: Emacs Lisp Regression Testing.)
Буфер стека вызовов показывает функции, которые выполняются, и значения их аргументов. При создании буфера стека вызовов каждый кадр стека отображается на одной, возможно очень длинной, строке. (Кадр стека — это место, где интерпретатор Lisp записывает информацию о конкретном вызове функции.) Наверху находится функция, которая была вызвана последней.
В стеке вызовов можно указать кадр стека, переместив точку в строку, описывающую этот кадр. Кадр, на который указывает точка, считается текущим кадром.
Если имя функции подчеркнуто, это означает, что Emacs знает, где находится исходный код этой функции. Можно щелкнуть по этому имени мышкой или переместиться к нему и нажать RET, чтобы перейти к исходному коду. Также можно нажать RET, когда точка находится на любом имени функции или переменной, которое не подчеркнуто, чтобы увидеть информацию о помощи для этого символа в буфере справки, если она существует. Команда xref-find-definitions, привязанная к M-., также может быть использована для любого идентификатора в стеке вызовов (см. Поиск идентификаторов в Руководстве по GNU Emacs).
В стеках вызовов хвосты длинных списков и концы длинных строк, векторов или структур, а также глубоко вложенные объекты, будут напечатаны как подчеркнутые «...». Можно щелкнуть по «...» мышкой или нажать RET, когда точка находится на нём, чтобы показать скрытую часть объекта. Чтобы контролировать степень сокращения, настройте backtrace-line-length.
Вот список команд для навигации и просмотра стеков вызовов:
- v
-
Переключить отображение локальных переменных текущего кадра стека.
- p
-
Переместиться к началу кадра или к началу предыдущего кадра.
- n
-
Переместиться к началу следующего кадра.
- +
-
Добавить символы перевода строки и отступы к верхнему уровню Lisp-формы в точке, чтобы сделать её более читаемой.
- -
-
Свернуть верхний уровень Lisp-формы в точке обратно в одну строку.
- #
-
Переключить
print-circleдля кадра в точке. - :
-
Переключить
print-gensymдля кадра в точке. - .
-
Развернуть все формы, сокращенные с помощью «...» в кадре в точке.
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/Backtraces.html