Vì một lý do nào đó, đôi khi tôi thấy hữu ích hoặc chỉ thú vị khi xem xét đầu ra trình biên dịch được tối ưu hóa cho một hàm.Làm thế nào tôi có thể xem việc tháo gỡ mã .NET đã được tối ưu hóa?
Đối với mã C/C++ không được quản lý, cách yêu thích của tôi để thực hiện việc này là biên dịch trong Chế độ phát hành, dán điểm ngắt trong chức năng quan tâm, chạy và xem tháo gỡ trong Visual Studio khi nó chạm vào điểm ngắt.
Gần đây tôi đã thử điều này với dự án C# và phát hiện ra rằng kỹ thuật đó không hoạt động. Ngay cả trong chế độ phát hành, việc tháo gỡ tôi thấy rõ ràng là không được tối ưu hóa. Tôi tìm thấy và vô hiệu hóa (trong Visual Studio 2010) các "Gỡ lỗi ... Tùy chọn và cài đặt ... Gỡ lỗi ... Tổng ... Suppress JIT tối ưu hóa trên tải mô-đun" tùy chọn, mà giả sử được gần gũi hơn với những gì tôi muốn, chỉ bây giờ nó cảnh báo tôi khi tôi cố gắng chạy nó, và sau đó tôi không thể làm cho nó dừng lại trên một điểm dừng để tôi có thể thấy việc tháo gỡ.
Vì vậy, nếu tôi muốn xem đầu ra được tối ưu hóa, tháo rời của bộ chia CLR (4.0) cho một chức năng, cách tốt nhất để thực hiện điều đó là gì? Để được rõ ràng, tôi muốn xem x86 (hoặc tốt hơn x86_64) tháo gỡ, không chỉ tháo gỡ IL (mà bạn có thể nhìn thấy trong Reflector).
Bạn không yêu (và ghét) khi điều đó xảy ra? :) – leppie
@leppie: Khá nhiều. Đó là một trường hợp cần biết giải pháp để biết cụm từ nào cần tìm kiếm để tìm ra giải pháp ... –