2010-10-28 31 views
6

Tôi làm việc cho một cửa hàng duy trì một ứng dụng khá mới. Ứng dụng này vẫn có tỷ lệ lỗi công bằng, với nhiều vé đến hàng ngày. Thông tin lỗi chúng tôi cung cấp với những vé đó không hữu ích vì nó có thể là do ứng dụng được biên dịch trong chế độ Phát hành, mà tôi đọc là nhỏ hơn và nhanh hơn (có ý nghĩa).Triển khai ứng dụng cho sản xuất bằng Chế độ gỡ lỗi thay vì Chế độ phát hành?

Có bất kỳ phân nhánh nào để triển khai ứng dụng .NET cho sản xuất được biên dịch trong chế độ Gỡ lỗi không? Tôi mong đợi nó sẽ chậm hơn một chút, nhưng tôi đã đọc sự khác biệt là danh nghĩa. Điều này sẽ đảm bảo với chúng tôi rằng khi chúng tôi nhận được lỗi trên vé, chúng tôi có số dòng liên kết với những lỗi này và điều này, tất nhiên, làm cho gỡ lỗi dễ dàng hơn nhiều.

Bất kỳ cờ đỏ chính nào có thể ngăn bạn thực hiện việc này? Tôi được giao nhiệm vụ nghiên cứu khả năng. Vì vậy, cảm ơn cho bất kỳ thông tin phản hồi.

Trả lời

3

Triển khai ứng dụng của bạn bằng DEBUG thay vì Chế độ phát hành sẽ làm chậm hiệu suất của bạn. Tất nhiên các thỏa hiệp có thể được thực hiện. Tôi sẽ đề nghị một trong các cách sau:

  • Nhìn vào thêm một lỗi xử lý toàn cầu để các onerror trong global.asax-
  • Look tại một thỏa hiệp tương tự như this một đề nghị Scott Hanselman
0

Tất cả phụ thuộc vào ý nghĩa của môi trường sản xuất, yêu cầu kinh doanh và hiệu suất của bạn. Không có gì là nghiêm ngặt.

+0

Tôi đánh giá cao phản hồi. Tôi chắc chắn sẽ tưởng tượng một số mở rộng "nó phụ thuộc". Tôi thành thật muốn thử một triển khai gỡ lỗi chỉ để xem nó có đặt ra bất kỳ vấn đề nào không; tuy nhiên, quyết định đó không nằm trong tay tôi. Cảm ơn. – Mario

0

Triển khai Gỡ lỗi xây dựng là một lá cờ đỏ với tôi mặc dù nó không phải là chưa từng nghe. Đây có phải là ứng dụng máy tính để bàn hoặc máy chủ không? Bất kỳ cuộc gọi nào đến Debug.Assert mà không thành công có thể là một vấn đề vì chúng có thể tắt ứng dụng của bạn và/hoặc gây ra trình gỡ lỗi đính kèm (VS.NET không phải là trình gỡ rối duy nhất và nếu tôi nhớ lại .net fx cài đặt trình gỡ lỗi nhẹ). Trong khi đó có thể hữu ích như một dev nó chắc chắn có thể gây nhầm lẫn cho một người bình thường.

Một tùy chọn hoạt động tốt hơn là các bản dựng gỡ lỗi đảm bảo rằng cơ chế báo cáo lỗi của bạn bao gồm (hiển thị hoặc nhật ký) thông tin theo dõi ngăn xếp từ bất kỳ số được ném nào exceptions. Điều này giúp xác định lỗi rất độc đáo wihtout cần pdbs.

+1

Các xác nhận phải luôn được báo cáo cho người dùng. Nếu một khẳng định không thành công, sau đó một cái gì đó là hoàn toàn WRONG trong ứng dụng và tất nhiên nó nên dừng lại/sụp đổ cùng một lúc. Xác nhận thất bại là kết quả của giai đoạn thử nghiệm quá ngắn, người dùng chỉ nên xem ngoại lệ (trong thế giới teletubbies, vâng, nhưng ...). –

+0

Tôi sợ rằng tôi không đồng ý rằng người dùng sẽ thấy các xác nhận. Chúng thực sự là kết quả của quá trình kiểm tra quá ngắn nhưng không có thông báo lỗi nào được hiển thị cho người dùng rằng họ không thể làm gì đó. Nó không phải là mục tiêu của người dùng để biết rằng 'id giao dịch không thể nhỏ hơn 0'. Một hộp thoại khẳng định hoàn toàn 0 để giúp người dùng. Hơn nữa: các khẳng định có khuynh hướng hiển thị thường xuyên và không được triển khai trong các ứng dụng được thử nghiệm kém. Cho thấy họ làm giảm khả năng của người dùng để hoàn thành công việc của họ trong khi chỉ là một công cụ xử lý sự cố tốt hơn cho các nhà phát triển hơn là một ngoại lệ được đăng nhập tốt. – dkackman

1

Kinh nghiệm của tôi là điều này có thể hoạt động tốt nếu bạn đang suy nghĩ về một ứng dụng máy tính để bàn (winforms/WPF), nhưng trong mọi trường hợp bạn nên thử điều này với một ứng dụng asp.net.

1

Bạn đã gắn thẻ [vb.net] này, bạn không thể gửi các bản dựng hoặc chương trình gỡ lỗi sử dụng WithEvents. Có một rò rỉ bộ nhớ chưa được giải quyết và chưa được giải quyết cho các cá thể WeakReference nếu không có trình gỡ rối nào được đính kèm. Chúng được sử dụng để hỗ trợ Chỉnh sửa + Tiếp tục.

Điều đầu tiên bạn có thể làm là gửi tệp .pdb cùng với các ứng dụng của bạn. Trong C# IDE, sử dụng Project + Properties, tab Build, Advanced, thay đổi Debug Info thành "Full". Bạn sẽ nhận được thông tin số dòng trong dấu vết ngăn xếp ngoại lệ.

Bạn không thể hoàn toàn tin tưởng số dòng, trình tối ưu hóa JIT sẽ di chuyển mã xung quanh để làm cho nó hoạt động nhanh hơn. Và các chức năng nội tuyến ngắn như getters tài sản. Bạn có thể thêm một yourapp.ini file trong cùng thư mục với tập tin thực thi mà vô hiệu hóa các ưu JIT

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1 
AllowOptimize=0 
0

Nếu đây là một ứng dụng máy tính để bàn, bạn có thể thử nó với một vài khách hàng, nhưng chú ý đến lời khuyên được đưa ra trong câu trả lời khác. Hãy thử một người có nhiều người dùng hơn hoặc có nhiều vấn đề có thể sẵn lòng tình nguyện.

Các vấn đề liên quan