Meskipun Emacs (24.3.93.1) berjalan dengan baik jika diluncurkan dari Finder, jika versi terminal diluncurkan:
/Applications/Emacs.app/Contents/MacOS/Emacs -nw
Emacs mogok dengan:
Fatal error 11: Segmentation fault[1] 51512 abort /Applications/Emacs.app/Contents/MacOS/Emacs -nw
.
Tampaknya masalah ini disebabkan oleh satu baris di init.el,
(set-face-attribute 'default nil :font "Menlo-16")
Jika baris itu dikomentari, versi terminal Emacs akan mulai baik juga.
Untuk mengetahui penyebab kecelakaan itu memakan waktu beberapa jam (mengurangi setengah init.el saya setengah).
Saya sadar bahwa bagaimanapun Emacs akan mewarisi font dan ukuran font apa pun yang ditentukan dalam aplikasi terminal (pada dasarnya, baris itu tidak berarti dalam cli.)
- Secara umum, apakah ada cara yang lebih baik untuk men-debug Emacs yang mogok? Mungkin menggunakan semacam cli debugger yang akan mencetak pesan yang lebih deskriptif?
- Mengapa garis itu menabrak Emacs via cli, tetapi tidak jika diluncurkan dari Finder?
(condition-case err (set-face-attribute 'default nil :font "Menlo-16") (error (message "Whoops!")))
masih ada crash yang sama dengan pesan kesalahan yang sama. Tidak ada pesan tambahan yang berasal dari elisp tambahan.GNU Emacs 24.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2013-03-13 on bob.porkrind.org
dari emacsformacosx.com , dan Emacs tidak macet. Jadi, itu pasti bug di versi yang lebih baru. Saya akan mengajukan laporan bug.M-x report-emacs-bug
. Pengembang Emacs kemudian akan membimbing Anda melalui apa yang dapat Anda lakukan untuk membantu men-debug masalah.Jawaban:
Untuk membantu Anda melacaknya lain kali
Ini terjadi pada saya sebelumnya. Ada situasi di mana
string-to-int
Emacs jatuh, dan butuh waktu berjam-jam untuk menunjukkan dengan tepat juga.Maaf saya tidak bisa memberikan jawaban yang lebih baik, tetapi crash Emacs terjadi jauh di dalam kode C, dan tidak ada alat bawaan yang tersedia untuk melacak masalah seperti itu.
Saya kira debugging dengan
gdb
itu mungkin, tetapi efektivitasnya akan tergantung pada kemampuan Andagdb
.Yang perlu Anda lakukan adalah
Ajukan laporan bug
Kode elisp murni (non-byte-dikompilasi) tidak pernah seharusnya crash Emacs. Itu dapat menyebabkan hang (karena beberapa loop tak terbatas) dan itu dapat menyebabkan Emacs kehabisan memori. Tapi, lebih dari itu, semua crash adalah bug .
Cukup dengan memberikan contoh kerja minimal yang Anda buat, bersama dengan deskripsi build dan sistem Anda, akan cukup membantu pengembang yang baik hati.
sumber
Sebagai referensi untuk debug dengan gdb, Anda ingin menggunakan src / temacs dari build tree. Ini adalah Emacs tanpa elisp pre-dumped yang membingungkan debugger.
sumber