Khi sử dụng trình lược tả trong Visual Studio để theo dõi các hàm đắt tiền, tôi đã thấy nhân dịp phần lớn công việc kết thúc bằng [clr.dll] . Về cơ bản số tiền đó là một hộp đen, và tôi tự hỏi nếu có một cách để theo dõi lý do tại sao nó dành quá nhiều thời gian ở đó. Tôi giả định rằng clr.dll xử lý các công cụ như biên dịch JIT, tải assembly và quản lý appdomain, thu gom rác, phản xạ, vv Nhưng nó làm cho nó thực sự khó khăn để thực sự cho biết mã nào làm cho nó tốn quá nhiều thời gian.Visual Studio profiler, cách theo dõi sử dụng [clr.dll]
Rõ ràng đó là một số mã khác ngoài thời gian chạy chính nó gây ra nó để dành nhiều thời gian trong clr.dll, vậy làm thế nào để bạn theo dõi những gì mã có lỗi?
Đối với bất kỳ thứ gì được quản lý mã, nó thực sự là một công việc tốt để theo dõi toàn bộ ngăn xếp cuộc gọi, chỉ khi nó được đưa vào mã gốc mà nó mất theo dõi chức năng nào chịu trách nhiệm. Vì vậy, tạm dừng nó kiểm tra ngăn xếp cuộc gọi bằng tay có vẻ như nó sẽ cho kết quả hữu ích hơn. –
@Bryce: 1) Có, nhưng tôi cho rằng mã của bạn là mã được quản lý (trừ khi nó không phải là), và nếu có điều gì đó bạn có thể sửa, nó nằm trong * mã của bạn *. 2) Trình thu thập thông tin thu thập thông tin ngăn xếp, nhưng vấn đề là thay vì cho phép bạn xem những gì các mẫu ngăn xếp đang nói, chúng tóm tắt thành các cây gọi và không có gì. Điều đó làm mất thông tin bạn cần: sự hiểu biết đầy đủ về những gì chính xác đang xảy ra trong các mẫu cụ thể, không phải trong tổng hợp. –