Znajdź początkowe źródło ostrzeżenia

11

Uruchomiłem polecenie i otrzymałem ostrzeżenie w minibuforze.

Dokładne ostrzeżenie było comint-completion-at-point failed to return valid completion datapo tym, jak automatycznie wykonałem polecenie w shell-mode.

Jak mogę ustalić pierwotne źródło ostrzeżenia?

Matthew Piziak
źródło
Zajrzyj do instrukcji na temat debugowania programów Lisp .
freakhill
1
C-h f comint-completion-at-point, a następnie kliknij nazwę pliku, aby zobaczyć kod źródłowy. Poszukaj tego komunikatu o błędzie. (Możesz również grep dla msg błędu w źródłach Lisp, aby go znaleźć.)
Drew

Odpowiedzi:

17

Jak wskazano w drugiej odpowiedzi, znajdziesz dobrą instrukcję przydatną dla wszystkich narzędzi do debugowania. Dla konkretnego problemu rozważę:

(setq debug-on-message "comint-completion-at-point failed to return valid completion data")

Jak podaje tekst pomocy:

If non-nil, debug if a message matching this regexp is displayed.

Na tej podstawie powinieneś uzyskać ślad po nadejściu niepowodzenia. Następnie można instrumentować omawiane funkcje za pomocą Cu CMx i przejść przez awarię następnym razem, gdy się pojawi, aby uzyskać więcej informacji.

stsquad
źródło
3
To doskonała odpowiedź. Dziękuję Ci. Myślę, że masz dodatkowy cytat w pierwszym wierszu, w którym łączysz setqi 'debug-on-message. Zmieniłem go setq debug-on-messagelub set 'debug-on-messagenaprawiłem dla mnie.
Matthew Piziak,
@MatthewPiziak: dzięki - naprawiono nadgorliwy cytat.
stsquad
Jest to o wiele lepsze niż zgrepowanie skompresowanych źródeł Emacsa! Jedynym minusem jest to, że problematyczne warunki muszą wystąpić, zanim będzie można je debugować.