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?


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.


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ć.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.