Перемещение
Команды, описанные в этом разделе, выполняются до достижения указанного места. Все, кроме i, создают временную точку останова для определения места остановки, затем переключаются в режим выполнения. Любая другая точка останова, достигнутая до предполагаемой точки остановки, также остановит выполнение. Подробности о точках останова см. в Точках останова.
Эти команды могут не работать должным образом в случае выхода из области видимости, поскольку это может обойти временную точку останова, в которой вы ожидали остановки программы.
- h
-
Перейти к точке остановки около текущей позиции (
edebug-goto-here). - f
-
Выполнить программу для одного выражения (
edebug-forward-sexp). - o
-
Выполнить программу до конца содержащего s-выражения (
edebug-step-out). - i
Войти в функцию или макрос, вызываемый формой после позиции (
edebug-step-in).
Команда h переходит к точке останова на текущей или последующей позиции, используя временную точку останова.
Команда f выполняет программу вперёд на одно выражение. Точнее, она устанавливает временную точку останова в позиции, которую forward-sexp достигнет, затем выполняется в режиме "go", чтобы программа останавливалась на точках останова.
С префиксным аргументом n, временная точка останова устанавливается на n s-выражений после позиции. Если содержащий список заканчивается до n дополнительных элементов, то место остановки находится после содержащего выражения.
Необходимо проверить, что позиция forward-sexp является местом, которого программа действительно достигнет. В cond, например, это может быть не так.
Для гибкости, команда f выполняет forward-sexp, начиная с текущей позиции, а не с точки остановки. Если вы хотите выполнить одно выражение с текущей точки остановки, сначала введите w (edebug-where) для перемещения туда, а затем введите f.
Команда o продолжает выполнение за пределами выражения. Она устанавливает временную точку останова в конце s-выражения, содержащего позицию. Если содержащее s-выражение само является определением функции, o продолжает выполнение до точки перед последним s-выражением в определении. Если вы находитесь в этой точке, выполняется возврат из функции, после чего программа останавливается. Другими словами, эта команда не завершает текущую функцию, если вы не находитесь после последнего s-выражения.
Обычно команды h, f и o отображают «Остановить» и приостанавливают выполнение на edebug-sit-for-seconds перед отображением результата только что вычисленной формы. Вы можете избежать этой паузы, установив edebug-sit-on-break на nil. См. Настройки Edebug.
Команда i входит в функцию или макрос, вызываемый формой списка после позиции, и останавливается на её первой точке остановки. Обратите внимание, что форма не обязательно должна быть той, которая собирается быть вычислена. Но если форма является вызовом функции, которая собирается быть вычислена, помните, что вы должны использовать эту команду до вычисления каких-либо аргументов, так как в противном случае будет слишком поздно.
Команда i инструментирует функцию или макрос, в который она должна войти, если он ещё не инструментирован. Это удобно, но помните, что функция или макрос остаются инструментированными, пока вы явно не деинструментируете их.
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/Jumping.html