2012-11-20 28 views
8

Bất kỳ đề xuất nào về cách thức, theo cách của trình duyệt chéo, tạo ra một dấu vết ngăn xếp trong javascript?Làm thế nào để tạo ra stacktrace javascript?

Trình duyệt mới hơn, Chrome và Firefox, hiển thị đối tượng bảng điều khiển cho phép tạo dấu vết ngăn xếp. Phương thức này không cung cấp phương thức lưu trữ dấu vết ngăn xếp cho một biến.

https://github.com/eriwen/javascript-stacktrace Hoạt động khá độc đáo, nhưng nó làm cho các yêu cầu ajax riêng biệt để tải tệp tập lệnh được bao gồm như một phần của dấu vết. Điều này có vẻ là một phương pháp phổ biến trong các thư viện dấu vết. Tôi đoán rằng các trình duyệt không hiển thị đủ thông tin để tạo ra một dấu vết có ý nghĩa (số dòng, tên hàm, tên tệp, đối số, v.v.).

+0

Bạn là chính xác rằng IE9- (chúng ta hãy đối mặt với nó, mà có lẽ những gì chúng tôi gặp rắc rối với ở đây) không cung cấp nhiều thông tin hữu ích. Người ta có thể lấy tập tin và số dòng từ 'window.onerror' ngoại trừ việc chỉ kích hoạt một số thời gian và số dòng đôi khi sai. –

+0

Có, như thường lệ, IE là vấn đề con. Tôi đang bị mắc kẹt hỗ trợ IE7 mà số dòng sự kiện onerror và thông tin tên chức năng là khủng khiếp. Nó vẫn có thể hữu ích; Tôi sử dụng nó để viết nhật ký cho các lỗi vô ích. – Kyle

Trả lời

1

Tạo đối tượng Lỗi và kiểm tra đối tượng cho thành viên ngăn xếp. Được điều chỉnh từ Code Overtones:

var e = new Error('dummy'); 
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '(' 
    .replace(/^\s+at\s+/gm, '') // remove prefix text ' at ' 
    .split('\n'); 
console.log(stack); 

Lỗi.stack được ghi lại trong Mozilla's reference documentation.

0

Airbrake provides a JavaScript library for logging stacktraces vào tài khoản Airbrake hoặc máy chủ Errbit của bạn.

Tôi không nhận được dấu vết ngăn xếp trong IE, và những người khác có thể không hoàn hảo, nhưng chắc chắn có vẻ như nó nằm dọc theo những gì bạn đang tìm kiếm.

+0

Cảm ơn. Tôi đã có một khuôn khổ tại chỗ có thể đăng nhập vào máy chủ của tôi. Về cơ bản nó là log4j trong javascript. Mã tạo dấu vết ngăn xếp trong liên kết bạn cung cấp có vẻ như đã được mượn từ dự án trong câu hỏi của tôi. Tôi đang tìm các thư viện khác để tạo stack-trace. Khung khai thác thực tế đang được sử dụng nên tách biệt. – Kyle

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