2012-03-04 17 views
5

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.

+0

không là nó có thể chuyển hướng đến một tập tin.? – kindahero

+0

Đ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 đó. –

Trả lời

2

Dường như debugger-batch-max-lines là những gì bạn đang sau:

M-xcustomize-groupRETdebuggerRET

(defcustom debugger-batch-max-lines 40 
    "Maximum lines to show in debugger buffer in a noninteractive Emacs. 
When the debugger is entered and Emacs is running in batch mode, 
if the backtrace text has more than this many lines, 
the middle is discarded, and just the beginning and end are displayed." 
    :type 'integer 
    :group 'debugger 
    :version "21.1") 
+0

Đúng, đã sửa nó. Cảm ơn. –

Các vấn đề liên quan