2010-05-13 34 views
9

Tôi đã có một ứng dụng VB.net. Hiện tại phiên bản phát hành của ứng dụng được tạo ra mà không có tệp PDB. Điều này cho tôi nhật ký lỗi thiếu các chi tiết hữu ích như số dòng. Tôi đang xem xét các tệp PDB có các bản dựng trong tương lai nhưng tôi muốn biết những lợi thế và bất lợi của điều này là gì (hiệu suất khôn ngoan, kích thước khôn ngoan, mã bảo mật khôn ngoan)Ưu điểm và nhược điểm của việc bao gồm các tệp PDB với ứng dụng phát hành của bạn

+0

Chính xác thì bạn đang cố gắng thực hiện điều gì với các tệp PDB? Trừ khi bạn obfuscate mã, bạn đã có dấu vết stack tốt đẹp với mã được quản lý (và tôi sẽ giả định PDB ám obfuscation vô dụng anyway ...). Lợi thế duy nhất bạn nhận được là các biểu tượng "ẩn" như tên người dân và tên tham số. – Krumelur

+0

Drats. Tôi thích câu hỏi này, nhưng nó đã được yêu cầu ở đây: http://stackoverflow.com/questions/1307482/whats-the-risk-of-deploying-debug-symbols-pdb-file-in-a-production-environment – David

+2

Tên tham số và số dòng là rất hữu ích. Ứng dụng của chúng tôi, rất lớn được xây dựng bởi một số nhà phát triển khác nhau trên nhiều phiên bản khác nhau của VB. Hiện tại chúng tôi có tên của các thủ tục trong ngăn xếp, nhưng nó sẽ là tốt đẹp để có thêm một ít dữ liệu. – zeocrash

Trả lời

10

Khi bạn triển khai các biểu tượng gỡ lỗi của mình ứng dụng của bạn, nó trở nên thực sự dễ dàng cho một người nào đó đến cùng và đảo ngược kỹ sư công việc của bạn, mà một số người thấy không mong muốn. Tương tự như vậy, bạn phải triển khai nhiều tệp hơn và dự án triển khai của bạn sẽ lớn hơn. Bản thân các tệp PDB không làm cho ứng dụng nhận được chậm hơn, vì việc gửi PDB không phải lúc nào cũng loại trừ tối ưu hóa gửi đi (bạn chỉ cần cẩn thận - cài đặt dự án "Gỡ lỗi" mặc định có xu hướng không tối ưu hóa kết quả đầu ra của bạn khi chúng tạo PDB).

11

Tôi biết tôi sẽ được đánh lên cho điều này nhưng ...

Tôi đồng ý với Dave Markle, nhưng tôi muốn thêm rằng một lợi thế của xuất bản các tập tin PDB là, như bạn nói , VERY rất tốt để gỡ lỗi.

Điều đó nói rằng, tôi không bán phần mềm và mã tôi viết là tất cả để sử dụng nội bộ trong công ty của chúng tôi. Trong bối cảnh này, tôi không thấy một vấn đề với việc đưa mã gỡ lỗi vào sản xuất, cùng với các tệp PDB. Tôi chưa bao giờ thấy một màn trình diễn thành công, và thành thật mà nói, người dùng của chúng tôi hiếm khi cung cấp cho chúng tôi thông tin phù hợp nếu họ gặp phải các ngoại lệ chưa được giải quyết. Tất nhiên, chúng tôi cố gắng xử lý các ngoại lệ một cách chính xác, nhưng như bạn đã biết, các lỗi sẽ xảy ra. Chiến lược của chúng tôi là thêm một trình xử lý ngoại lệ toàn cục cho TẤT CẢ các dự án và ghi lại các sự kiện đó vào cơ sở dữ liệu của anh ấy. Các lỗi này chứa các số dòng vì chúng tôi bao gồm các tệp gỡ lỗi và kết quả là chúng tôi có thể nhanh chóng xác định và phản ứng với mã không đúng, sửa lỗi và nhận các ứng dụng không có lỗi. Với tôi (và cho người dùng của chúng tôi) đây là một lợi ích to lớn mà tôi không muốn làm mà không có.

Vì vậy, nếu bạn đang ở trong tình huống tương tự, tôi nói quên lập trường chính thức (trong trường hợp này) và tiếp tục và xuất bản tệp pdb với MỘT cảnh báo quan trọng.

Hãy chắc chắn rằng mọi ứng dụng web bạn triển khai với các tệp PDB, hoàn toàn chắc chắn rằng TẤT CẢ ngoại lệ được xử lý đúng cách và bạn không vô tình vạch trần các dòng mã trong trang lỗi Asp.NET chuẩn.

0

Tôi thấy hữu ích khi cũng có thông tin gỡ lỗi được tạo cho phiên bản Bản phát hành - nó giúp khắc phục lỗi. Nó không làm cho chương trình chạy chậm hơn. Nhưng bạn không nên gửi tệp PDB với ứng dụng của mình, nếu bạn không muốn người khác có thể đảo ngược kỹ thuật nó dễ dàng hơn. Chỉ đưa nó cho người kiểm thử.

+0

Ứng dụng này là một ứng dụng nội bộ. Nó sẽ chỉ được sử dụng trong công ty của chúng tôi.Các hạn chế người dùng ngăn người dùng có thể đảo ngược mã kỹ sư của bạn – zeocrash

2

Tạo pdbs cho bản phát hành bản phát hành của bạn nhưng không gửi chúng. Giữ pdbs ở đâu đó an toàn với mã xây dựng và mã nguồn phù hợp. Nếu bạn gặp sự cố trực tiếp hoặc tương tự, bạn có thể sử dụng pdbs để thực hiện gỡ lỗi sau khi chết bằng cách sử dụng Debugging Tools for Windows hoặc Visual Studio.

+1

Chúng tôi cố gắng và giữ tất cả các ngoại lệ được xử lý. Vì vậy, chúng tôi không thực hiện đăng lỗi gỡ lỗi. Về ngoại lệ được xử lý, chúng tôi ghi nhật ký ngăn xếp vào cơ sở dữ liệu – zeocrash

+2

Gỡ lỗi bản đăng bài cũng hữu ích khi bạn không nhận được bất kỳ ngoại lệ nào được ném, ví dụ: nếu ứng dụng của bạn bị treo. Bạn có thể nắm bắt một mini-dump của quá trình treo, và sau đó gỡ lỗi nó từ xa bằng cách sử dụng pdbs và mã nguồn. – Polyfun

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