2009-02-25 18 views
8

Tôi biết PDB được tạo cho được quản lý dự án bằng .NET bằng cách cung cấp cho trình biên dịch đối số/gỡ lỗi. Có cách nào để xác định điều này trong giao diện VS (2005) không?Làm thế nào để tạo PDB cho các dự án được quản lý .net ở chế độ phát hành?

Cách duy nhất tôi có thể nhận được nó để tạo ra PDBs trong chế độ phát hành cho đến nay là để tự sửa đổi các tập tin csproj và thêm:

<DebugSymbols>true</DebugSymbols> 
<DebugType>full</DebugType> 

theo các cài đặt 'phát hành':

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 

Một điều: tôi học được từ MSDN here rằng các giá trị có thể cho thẻ DebugType là:

  • full
  • pdbonly
  • none

Làm thế nào để các giá trị ảnh hưởng đến hành vi của trình biên dịch?

Trả lời

7

Trong VS2008, bạn có thể đặt thuộc tính sử dụng thuộc tính dự án -> Build -> Nâng cao ... -> Thông tin gỡ lỗi.

+0

Đẹp! Tôi xác minh nó hoạt động trong VS 2005 là tốt. Tôi nhìn chằm chằm vào cài đặt 'Xây dựng' một triệu lần, nhưng không bao giờ nhận thấy nút 'Nâng cao'. Cảm ơn! –

+0

Trong VS 2008 (và có thể 2005) pdb-only là mặc định cho bản phát hành bản phát hành (và đầy đủ để gỡ lỗi). – Richard

4

Tôi tìm thấy this MONO request có thể làm sáng tỏ sự khác biệt giữa 'full' và 'pdbonly'.

csc có một "pdbonly" debugtype rằng tạo PDBs, trong khi sản xuất mã thời gian chạy, tức là tối ưu hóa, không debugger thuộc tính vv

này rất quan trọng để có thể lấy chồng dấu vết hữu ích từ mã chất lượng phát hành.

Dường như với tôi rằng sự tồn tại của 2 thẻ (DebugSymbols và DebugType) là thừa.

+2

"lấy chồng dấu vết hữu ích" này là không chính xác. Bạn sẽ luôn nhận được dấu vết ngăn xếp hữu ích trong mã .NET do sự hiện diện của siêu dữ liệu loại. Các PDB trong hương vị phát hành LÀ quan trọng đối với một bước thông qua mã sản xuất nhưng bạn có thể gặp lỗi trong trình gỡ rối do tối ưu hóa. –

+0

@Daniel Bullington, Bạn không nhận được số dòng và tên tệp mà không có tệp pdb, khiến cho dấu vết ngăn xếp ít nhất "kém hữu ích" – tster

+0

@tster yes Tôi đồng ý, nhưng thậm chí không có PDB (và do đó số dòng/tên tệp), các dấu vết ngăn xếp vẫn còn hữu ích cho mức độ thấp hơn :) –

6

Trong DEBUG:

<DebugSymbols>true</DebugSymbols> 
<DebugType>full</DebugType> 
<Optimize>false</Optimize> 

Trong CHÍ:

<DebugSymbols>true</DebugSymbols> 
<DebugType>pdbonly</DebugType> 
<Optimize>true</Optimize>