2012-05-06 3 views
6

Tôi đang xây dựng dịch vụ cửa sổ C# dự án của VS 2010 trong chế độ Phát hành. Cơ hội đầu tiên của tôi để có được ngạc nhiên là nó tạo ra các tập tin pdb ngay cả trong bản phát hành trong chế độ. Tôi không thể tải các biểu tượng gỡ lỗi sau khi đính kèm quá trình gỡ lỗi.Tại sao biên soạn dự án VS 2010, tạo tệp pdb, khi xây dựng trong chế độ Phát hành và Gỡ lỗi?

Câu hỏi của tôi là nếu chúng tôi có tệp pdb trong cả chế độ gỡ lỗi và chế độ phát hành thì tại sao cần có hai chế độ biên dịch.

+0

Câu hỏi nhanh. Loại dự án nào? .NET, C++? – ervinbosenbacher

+0

Kiểm tra cài đặt dự án-> Build-> Advanced-> Advanced Build Settings-> Debug Info. Tôi nghĩ rằng nếu nó được thiết lập để pdb-chỉ trong chế độ phát hành, nó sẽ tạo ra các tập tin pdb. – ervinbosenbacher

Trả lời

6

Câu hỏi của tôi là rằng nếu chúng ta có các file pdb trong cả hai gỡ lỗi và phát hành chế độ thì tại sao có cần thiết phải chế độ hai biên soạn

Có sự khác biệt khác so với thế hệ PDB giữa gỡ lỗi và phát hành. Nếu bạn đi vào các thuộc tính Xây dựng và đi vào "Nâng cao", có các mức thông tin gỡ lỗi khác nhau sẽ được tạo - Toàn bộ, chỉ PDB và Không.

Ngoài ra, còn có các mức tối ưu hóa thời gian biên dịch khác nhau và sự hiện diện của các ký hiệu tiền xử lý khác nhau (ví dụ: mỗi Debug.Assert sẽ có mặt hoặc vắng mặt).

Tất nhiên bạn cũng có thể có các cấu hình xây dựng riêng của mình, với nhiều tùy chọn khác nhau.

+0

sự khác nhau giữa chỉ Full và PDB là gì? –

+1

@Romil: http://msdn.microsoft.com/en-us/library/8cw0bt21(v=vs.80).aspx –

+2

và http://mariangemarcano.blogspot.com/2011/11/visual-studio- debugging-and-remote.html –

2

Có nhiều lý do tại sao có chế độ gỡ lỗi/giải phóng, không liên quan đến việc tạo tệp PDB.

VS thực hiện các chương trình được biên dịch của bạn nhanh hơn ở chế độ phát hành. Ngoài ra, có các chỉ thị trình biên dịch có thể thay đổi cách chương trình hoạt động nếu bạn đang ở chế độ gỡ lỗi và phát hành. Ví dụ, bạn có thể sử dụng các chỉ thị của trình biên dịch để vô hiệu hóa các khối trycatch hàng đầu của bạn để bạn có thể tách biệt một ngoại lệ đang được ném vào một dòng mã cụ thể.

Đó chỉ là một vài ví dụ. Tóm lại, chế độ gỡ lỗi có nhiều mục đích hơn là chỉ tạo các tệp PDB cho bạn.

1

Bạn có thể có nhiều hơn hai chế độ biên dịch. Thông thường, gỡ lỗi và phát hành có nghĩa là đứng cho dù bạn muốn tối ưu hóa hay không. Bất kể, bạn vẫn có thể tạo ra thông tin gỡ lỗi, chỉ có một PDB cho một phiên bản phát hành sẽ không có nhiều trợ giúp. chức năng inline, các biến thể được loại trừ, vv

0

Gần đây tôi đã làm một winupdate (20.120.508) và Visual Studio dường như là rất chậm gỡ lỗi sau đó với một sự chậm trễ 1 phút sau khi lag biên dịch-to-runDebug, sau đó khi chương trình gỡ lỗi thoát, một sự chậm trễ 1 phút để get kiểm soát lại studio trực quan. Tôi đã làm sạch tất cả, nhưng không có niềm vui.

Giải pháp: Tôi đã xóa các tệp * .sdf và * .suo theo cách thủ công trong dự án/giải pháp của mình và xây dựng lại. Vấn đề biến mất một cách kỳ diệu.

Không chắc chắn lý do tại sao, nhưng nội dung nào đó không đồng bộ, bị hỏng hoặc không tương thích với bản cập nhật và cần được thổi bay thủ công.