Nöbetçi ve yazı tipi kilidi sırasında hata ayıklama


10

Bir işlem sentinelinde veya yazı tipi kilitleme sırasında bir hata oluştuğunda, Emacs debug-on-errordaha önce etkinleştirilmiş olsa bile bir geri iz göstermez .

Bu hataların neden yakalandığını anlıyorum, aynı hata geri izlemeyi sunmaya çalışırken tekrar tetiklenebilir. Ancak aslında bu hata hata ayıklamak istediğinizde çok yararlı değil. Emacs'ın bundan çalışmak zorunda kalmaktan daha tepkisiz hale gelmesini tercih ederim:

error in process sentinel: Wrong type argument: stringp, nil

Her şeyden önce, ilk delirmeye başlarsa, ikinci bir örneğe başlayabilirim. Biraz daha bağlam, bir sentinelde teorik olarak böyle bir hatanın meydana gelebileceği birçok yer olduğunda yardımcı olacaktır.

Öyleyse, Emacs'ın debug-on-erroretkisi olmayan durumlarda bile bir geri iz göstermeye nasıl zorlayabilirim ?


1
Emacs.stackexchange.com/questions/3552/… ' ı gördüm ancak genel olarak bununla ilgili bir soru olması gerektiğini düşünüyorum, sadece belirli bir vaka değil. Ayrıca umarım "printf kullan" tek cevap değildir, çünkü geçmişte kullandığım şey budur ve tatmin edici değildir, özellikle de hata "Geçersiz yüz referansı: bazı-yüz-hangi-i-kesinlikle biliyorum -exists ", yüklediğim hemen hemen her paket tarafından tetiklenebilir.
tarsius

URL bu soruyu işaret ediyor ve bu nedenle yorumunuzda kafa karıştırıcı, kasıtlı mı yoksa sizin adınıza bir hata mı?
wasamasa

TTP: Kastettiğim konu //emacs.stackexchange.com/questions/1045/how-to-debug-startup-problem-if-debug-init-has-no-effect
Tarsius

amaçlanan link tarsius : emacs.stackexchange.com/questions/1045/… ug ug-init-etkisi yok
15'te

Yanıtlar:


10

Süreç nöbetçileri için iyi bir neden olduğunu sanmıyorum. IOW sadece eksik bir özellik olduğunu düşünüyorum, bu yüzden size öneririm M-x report-emacs-bug.

Yazı tipi kilidi için sorun daha zordur, çünkü gerçekten olan şey, hatanın jit kilidi sırasında, yani yeniden görüntüleme sırasında tetiklenmesidir ve o anda hata ayıklayıcıya kolayca giremeyiz (Gerd bir noktada IIRC yapmaya çalıştı) işe yarıyor, ama yine de bazı ciddi sorunlar vardı). Böylece, aşağıdaki yollardan biriyle hata ayıklayabilirsiniz:

  • M-x jit-lock-debug-mode hata ayıklayıcısına girebilmemiz için jit kilidini yeniden görüntülendikten hemen sonra çalışacak şekilde değiştirir.
  • M-: (setq font-lock-support-mode nil) RETve ardından + yazı tipi kilidini yeniden etkinleştirin. Bu şekilde font-lock artık jit-lock kullanmaz, bu nedenle sonraki yeniden görüntüleme yerine kullanıcının komutu sırasında çalışır.

Aslında, debug-on-errorsüreç nöbetçileri üzerinde iyi çalışıyor gibi görünüyor.
Stefan

@tarsius - lütfen hata ayıklama sorununuza bir bağlantı gönderin
15'te

tarsius'un özellik talebi 19432'dir ve burada tekrarlanamaz olarak etiketlenir. Stefan Monnier orada, bunun --evalyerine kullanan bir çözüm gönderdi --debug-init . Ayrıca onun geçici çözümü benim gerçek bir geri .emacs.d
iz

1
@ dcorking: hayır, hata # 19432'de, bir "geçici çözüm" yayınlamadım, ancak hatasını yeniden oluşturmayı denemedim. Neden sorununuzu yeniden oluşturmak için bir reçete göndermiyorsunuz?
Stefan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.