Tôi đang làm việc trên dự án phần mềm cho Emacs có một số kiểm tra có thể chạy ở chế độ hàng loạt để kiểm tra hồi quy nhanh. Tuy nhiên, khi các kiểm tra thất bại, dấu vết ngăn xếp trong thiết bị đầu cuối bị cắt ở đầu, vì vậy tôi phải chạy lại kiểm tra thất bại trong phiên Emacs tương tác để xem trạng thái xếp chồng đầy đủ và tìm ra lỗi xảy ra ở đâu. Có một số biến tôi có thể sửa đổi mà sẽ mở rộng chiều dài tối đa của dấu vết ngăn xếp mà Emacs in đến thiết bị đầu cuối trong chế độ hàng loạt?Làm thế nào tôi có thể ngăn chặn các emacs cắt bỏ các dấu vết ngăn xếp trong chế độ hàng loạt?
Nếu bạn muốn có một trường hợp thử nghiệm đơn giản để tạo ra một vết đống thực sự sâu sắc rằng sẽ bị cắt gọn, đây là một trường hợp tầm thường của đệ quy vô hạn, mà emacs sẽ hủy bỏ khi nó đạt đến một độ sâu nhất định:
emacs -Q -batch --eval '(defun f() (f))' -f toggle-debug-on-error -f f
đây là chính xác đầu ra của lệnh đó trên hệ thống của tôi:
Debug on Error enabled globally
...
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
command-line-1(("--eval" "(defun f() (f))" "-f" "toggle-debug-on-error" "-f" "f"))
command-line()
normal-top-level()
Đặc biệt, lưu ý rằng dòng sau Debug on Error enabled globally
thực sự là một dấu chấm lửng trong đầu ra, không có cách nào để đi sâu hơn vào bất kỳ ngăn xếp theo dõi mà không cần chạy tương tác.
không là nó có thể chuyển hướng đến một tập tin.? – kindahero
Điều đó có liên quan gì đến điều gì? Vấn đề là cửa ra vào tiêu chuẩn chế độ bãi biển không chứa dấu vết ngăn xếp đầy đủ. Việc chuyển hướng nó đến một tệp sẽ không thay đổi điều đó. –