Một số thời gian trước đây tôi đã đọc một bài viết về CLR, nơi tác giả đã cho thấy rằng nếu một dự án được biên dịch trong chế độ DEBUG, trước khi mỗi toán tử đi kèm lệnh NOP, do đó cho phép gỡ lỗi mã. Tuy nhiên, hôm nay tôi phát hiện ra rằng chúng tôi cũng có thể gỡ lỗi trong chế độ phát hành ... Hãy giúp hiểu sự khác biệt.Gỡ lỗi trong .NET ở chế độ Release
Trả lời
Bạn có thể gỡ lỗi trong chế độ Phát hành ở mức độ nào đó. Gỡ lỗi và phát hành chỉ đơn giản là xây dựng các cấu hình (trong đó bạn có thể tạo nhiều), sự khác biệt thực sự là cấu hình Debug không tối ưu hóa mã nhị phân được tạo ra (mã tối ưu hóa phức tạp gỡ lỗi). Nó cũng tạo ra dữ liệu gỡ lỗi bổ sung mà bản phát hành không.
Vì vậy, bạn đang nói rằng cấu hình Debug phức tạp gỡ lỗi ?? –
Không, xin lỗi, tôi đã nói tối ưu hóa mã phức tạp để gỡ lỗi. Tôi sẽ viết lại nó để nó không gây nhầm lẫn. – erodewald
Debugging .net mã để bạn có thể bước qua mã nguồn khi nó được thực thi thường đòi hỏi ba điều:
- Biểu tượng (file .pdb liên quan) được xây dựng cùng với việc lắp ráp. dll hoặc .exe
- Nguồn (các cs liên quan, .vb vv files)
- mã máy hành án phải được unoptimized
Ký hiệu được kiểm soát bởi cờ /debug:{full | pdbonly}. Nếu bạn chỉ định /debug:full
(ngay cả trong bản phát hành bản phát hành, với việc tối ưu hóa trình biên dịch bị tắt), bạn có thể đính kèm vào quy trình đã chạy và thực hiện từng bước. Nếu bạn có /debug:pdbonly
, thì bạn phải sử dụng trình gỡ lỗi để khởi động chương trình (và không thể xem biểu tượng khi đính kèm vào một quá trình đang chạy).
Tối ưu hóa được kiểm soát chi tiết theo tùy chọn trình biên dịch /debug, nhưng có thể được kiểm soát thêm bởi /optimize-.
Biên dịch trong chế độ phát hành tối ưu hóa nhị phân kết quả, điều này làm cho trình gỡ lỗi khó hơn (nhưng không thể) để biết mã nhị phân nào đến từ dòng mã nguồn nào.
Chế độ gỡ lỗi được thiết kế để giúp trình gỡ lỗi 'theo dõi' dễ dàng hơn, do đó, nó tách dòng mã bằng NOP và không tối ưu hóa kết quả nhị phân.
Ý tôi là, điều kỳ lạ là sự kiểm soát lớn như vậy được cấp cho các quy trình này. Bởi vì hôm nay tôi thấy đồng nghiệp của tôi đã liên tục sửa mã trong chế độ Release và khi tôi hỏi anh ấy về điều này, anh ấy không biết. –
Nếu không có các biểu tượng gỡ lỗi (tệp .pdb), trình gỡ lỗi sẽ không biết mã nguồn ban đầu là gì, nhưng nó vẫn có thể bước qua mã nhị phân. AFAIK, một trình gỡ lỗi có thể đính kèm vào bất kỳ quá trình nào mà nó muốn và bước qua nó. Hệ điều hành cung cấp rất nhiều quyền hạn cho các trình gỡ rối. –
Hm, do đó, nó sẽ khó khăn hơn cho trình gỡ lỗi, nhưng vẫn có thể? (Tôi có nghĩa là, không có tập tin pdb)? –
- 1. Chạy RSpec ở chế độ gỡ lỗi
- 2. Hiển thị số dòng trong Stack Trace để lắp ráp .NET ở chế độ Release
- 3. lập trình phát hiện chế độ Release/Debug (NET)
- 4. Ống Django bị hỏng ở chế độ Gỡ lỗi
- 5. có thể chạy chrome ở chế độ gỡ lỗi không?
- 6. Chế độ gỡ lỗi và gỡ lỗi trong IDE
- 7. Độ chính xác cao/kép ở chế độ gỡ lỗi/giải phóng
- 8. log4net không đăng nhập khi chạy ứng dụng .Net 4.0 Windows được cài đặt ở chế độ Release
- 9. Gỡ lỗi Emacs Lisp chế độ chính
- 10. Dự án sẽ không bắt đầu ở chế độ gỡ lỗi
- 11. Chỉnh sửa mã trong Visual Studio 2008 ở chế độ gỡ lỗi
- 12. Android chạy rất chậm trong chế độ gỡ lỗi
- 13. Chỉ hiển thị mục menu trong chế độ gỡ lỗi?
- 14. Tắt chế độ gỡ lỗi tùy chọn() trong R
- 15. AVAudioPlayer ném breakpoint trong chế độ gỡ lỗi
- 16. chuyển đổi mã giữa chế độ gỡ lỗi và chế độ phát hành trong java - android
- 17. Kiểm tra xem mã có thực hiện ở chế độ gỡ lỗi
- 18. Làm thế nào để khởi động JBOSS 7 ở chế độ gỡ lỗi?
- 19. Chạy ứng dụng consol ở chế độ gỡ lỗi với tự WCF?
- 20. Lập trình thiết lập thời gian chờ WCF ở chế độ gỡ lỗi
- 21. Không thể gỡ lỗi ứng dụng ở chế độ phát hành ngay cả với DebugType = full
- 22. Tại sao MVC4 @ Styles.Render() không hoạt động như mong đợi ở chế độ gỡ lỗi
- 23. Cách gỡ lỗi ứng dụng ở chế độ tương thích trên iOS 7?
- 24. Chạy dự án sbt ở chế độ gỡ lỗi với cấu hình tùy chỉnh
- 25. Ứng dụng Java Spring Web bắt đầu chậm ở chế độ gỡ lỗi
- 26. Cách cấu hình log4net để in sang bàn điều khiển ở chế độ gỡ lỗi
- 27. Kiểm tra đơn vị không chạy khi KHÔNG ở chế độ Gỡ lỗi
- 28. Làm cách nào để cho HotSpot VM ở chế độ gỡ lỗi?
- 29. Cài đặt .NET Framework 4 ở chế độ im lặng
- 30. Chế độ Máy chủ Android Gỡ lỗi USB
Làm cách nào? Tôi không thực sự biết làm thế nào bạn có thể gỡ lỗi trong chế độ phát hành – crassr3cords
Tôi gặp phải rằng tôi không thể di chuyển đến các asseblies khác trong khi tôi đã gỡ lỗi trong chế độ phát hành –