Dường nhưvết vs gỡ lỗi trong NET BCL
phần lớn giống nhau, ngoại trừ đáng chú ý là gỡ lỗi sử dụng được biên dịch ra trong một cấu hình phát hành.
Khi nào bạn sẽ sử dụng cái này chứ không phải cái kia? Câu trả lời duy nhất cho điều này tôi đã đào tạo cho đến nay chỉ là bạn sử dụng lớp Gỡ lỗi để tạo đầu ra mà bạn chỉ thấy trong cấu hình gỡ lỗi và Dấu vết sẽ vẫn ở trong cấu hình phát hành, nhưng điều đó không thực sự trả lời câu hỏi trong đầu tôi.
Nếu bạn đang đi để cụ mã của bạn, tại sao bạn lại sử dụng gỡ lỗi, vì vết có thể được tắt mà không có một biên dịch lại?
Tôi không đồng ý hoàn toàn với câu trả lời này. Dấu vết là cấp thấp hơn Debug và không bao giờ được sử dụng trong sản xuất. Theo kinh nghiệm của tôi, dấu vết được sử dụng khi bắt đầu các phương thức hoặc "truy tìm" một phần công việc khi nó đi qua một luồng công việc và theo một số cách, hiển thị ngăn xếp cuộc gọi. Mọi thứ ở trên và bao gồm Thông tin phải là các cấp duy nhất được sử dụng trong sản xuất. Đó là thông tin, cảnh báo, lỗi, gây tử vong. –
Tôi nghĩ rằng một khác biệt khác là bạn có thể cấu hình [Trace Listeners] (http://msdn.microsoft.com/en-us/library/4y5y10s7 (v = vs.110) .aspx) trong ứng dụng của bạn và định tuyến đầu ra của dấu vết cho phù hợp. Trình theo dõi mặc định trong Visual Studio sẽ hướng các thông điệp theo dõi tới luồng đầu ra Gỡ lỗi. – orad
Truy tìm là thứ mà ** nên ** được sử dụng trong quá trình sản xuất. Điều quan trọng là ** mọi hệ thống con của Windows đều chứa mã theo dõi. Mỗi lần tìm kiếm ổ đĩa cứng, mọi cấp phát bộ nhớ, mỗi ngắt, chuyển đổi ngữ cảnh của CPU, mọi lịch trình chuỗi đều có mã truy tìm được mở. Nền tảng theo dõi sự kiện cho nền tảng Windows (ETW) là một hệ thống truy tìm cực kỳ nhẹ, bất cứ ai có thể kích hoạt bất cứ lúc nào trên bất kỳ Windows PC. [System.Diagnostics.Tracing.EventSource] (https://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) là cách được quản lý để gửi các sự kiện theo dõi tới ETW. –