Powiedzmy, że emacs generuje błąd, którego nie rozumiem. A może błąd mówi „Wartość symbolu jako zmienna jest nieważna: tryby”, ale modes
w moim kodzie jest wiele wystąpień tego symbolu , więc potrzebuję trochę kontekstu. Czy Emacsa można skonfigurować tak, aby podawał numer wiersza kodu lisp, aby wiedzieć, który kod powoduje błąd?
Próbowałem to zrobić (setq stack-trace-on-error '(buffer-read-only))
i uruchomiłem odpowiedni kod, aby uzyskać ślad stosu. Brak śladu stosu.
Próbowałem także wywołać edebug-defun
moją funkcję i przejść przez nią. Błąd pojawia się dopiero po wyjściu z funkcji.
(Naprawdę nie jestem tak zainteresowany przyczyną konkretnego błędu, jaki napotykam obecnie, jak rozwijaniem ogólnych umiejętności debugowania dla elisp. Proszę doradzić, jak mogę uzyskać numer linii, seksu lub ślad stosu z błąd.)
t
a następnie przejściu do ewaluacji funkcji zgłaszania błędów)
debug-ignored-errors
czy nie zawiera żadnych błędów. Jeśli wybierzesz debug-on-signal
opcję nil
inną niż , i tak było w przypadku, gdy inny kod obsługiwał błąd, będziesz w stanie uzyskać błąd, zanim zrobi to drugi kod.
nil
debug-on-error
? Czy to nie pomaga?