CẢNH BÁO Tài liệu
MSDN cho / gỡ lỗi chuyển đổi (Trong Visual Studio, đó là Thông tin gỡ lỗi) có vẻ như đã lỗi thời! Đây là những gì nó có mà là không chính xác
Nếu bạn sử dụng / debug: full , hãy lưu ý rằng có một số tác động đến tốc độ và kích thước của mã được tối ưu hóa JIT và tác động nhỏ đến chất lượng mã với / debug: full . Chúng tôi đề xuất / gỡ lỗi: pdbonly hoặc không có PDB để tạo mã phát hành.
Một điểm khác biệt giữa / debug: pdbonly và / debug: full là với / debug: full trình biên dịch phát ra a DebuggableAttribute
, được sử dụng để thông báo cho trình biên dịch JIT biết rằng thông tin gỡ lỗi có sẵn.
Sau đó, điều gì là sự thật bây giờ?
- Chỉ dành cho Pdb - Trước .NET 2.0, nó đã giúp điều tra sự cố kết xuất từ sản phẩm đã phát hành (máy của khách hàng). Nhưng nó không cho phép đính kèm trình gỡ lỗi. Đây không phải là trường hợp của .NET 2.0. Đó là chính xác giống như đầy đủ .
- Đầy đủ - Điều này giúp chúng tôi điều tra các bãi chứa sự cố và cũng cho phép chúng tôi đính kèm trình gỡ lỗi để phát hành bản dựng. Nhưng không giống như MSDN đã đề cập, nó không ảnh hưởng đến hiệu suất (kể từ .NET 2.0). Nó hoạt động giống hệt như chỉ Pdb .
Nếu chúng hoàn toàn giống nhau, tại sao chúng ta lại có những tùy chọn này? John Robbins (thần gỡ lỗi cửa sổ) đã phát hiện ra những điều này có vì lý do lịch sử.
Quay lại .NET 1.0 có sự khác biệt, nhưng trong .NET 2.0 thì không. Có vẻ như .NET 4.0 sẽ theo cùng một mô hình. Sau khi kiểm tra kỹ với Nhóm gỡ lỗi CLR, không có sự khác biệt nào cả.
Điều kiểm soát việc JITter có thực hiện xây dựng gỡ lỗi hay không là công tắc / tối ưu hóa. <…>
Điểm mấu chốt là bạn muốn xây dựng các bản phát hành của mình với / tối ưu hóa + và bất kỳ công tắc / gỡ lỗi nào để bạn có thể gỡ lỗi bằng mã nguồn.
sau đó anh ta tiếp tục chứng minh điều đó.
Bây giờ tối ưu hóa là một phần của một công tắc riêng biệt /optimize
(trong studio trực quan, nó được gọi là Optimize code
).
Tóm lại, không phân biệt DebugInfo đặt pdb-only hay full, chúng ta sẽ có kết quả giống nhau. Khuyến nghị là nên tránh Không vì nó sẽ khiến bạn mất khả năng phân tích kết xuất sự cố từ sản phẩm đã phát hành hoặc đính kèm trình gỡ lỗi.