Отладчик Emacs: как я могу выйти, перешагнуть? - PullRequest
7 голосов
/ 04 апреля 2010

Не знаю, почему у меня так много проблем с поиском документации для отладчика elisp

Я вижу, что у него есть команды "войти" (d). Но я не вижу ни шага, ни шага.

Кто-нибудь может помочь?

Если у меня есть это в Backtrace буфере:

Debugger entered--returning value: 5047
  line-beginning-position()
* c-parse-state()
* byte-code("...")
* c-guess-basic-syntax()
  c-show-syntactic-information(nil)
  call-interactively(c-show-syntactic-information)

... куда поместить курсор и какую клавишу ввести, чтобы выйти из состояния синтаксического анализа () fn? под этим я подразумеваю запуск до тех пор, пока не вернется fn, а затем снова остановка в отладчике.

Ответы [ 3 ]

4 голосов
/ 05 апреля 2010

При отладке нажимаю ? и вижу:

o               edebug-step-out
f               edebug-forward-sexp
h               edebug-goto-here

Я считаю, что o (это step-out) и f (например, шаг), это то, что вы ищете, хотя я также нахожу h чрезвычайно полезно.

2 голосов
/ 04 апреля 2010

'c' и 'j' работают как шаг и шаг за шагом.Когда встречается помеченный фрейм (обозначенный «*») (в документах написано «выход», но это не похоже на поведение отладчика), отладчик будет введен повторно.Когда верхний фрейм помечен, они работают как пошаговый;когда это не так, они работают как выход.

В вашем примере backtrace, ввод любого из них превратится из line-beginning-position в c-parse-state.Флаг рамки должен очиститься, поэтому при наборе во второй раз следует выйти за пределы c-parse-state.

1 голос
/ 21 августа 2011

Hm. Я, например, предпочитаю debug edebug, но каждому свое ...

Что касается debug, я использую d, c, e и q.

Если вы используете debug, следует помнить одну вещь, которая может сэкономить время и усилия, - когда вы видите вызов макроса (начинается с #), вы можете просто нажать c, чтобы развернуть macro - обычно нет смысла копаться в коде расширения макроса (если вы не написали макрос и не пытаетесь его отладить).

В частности, для dolist существует два уровня макроразложения, которые можно пропустить, используя c: один для dolist и один для block.

НТН.

...