2009-02-25 35 views
8

我知道通過給編譯器/ debug參數在PDB中爲管理的項目生成PDB。 有沒有辦法在VS(2005)GUI中指定它?如何在發佈模式下生成.net託管項目的PDB?

我能得到它在釋放模式產生PDBS到目前爲止的唯一方法是手動修改的.csproj文件,並添加:

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

下的「釋放」的設置:

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

另一件事:我從MSDN here瞭解到,爲DebugType標籤可能的值是:

  • full
  • pdbonly
  • none

如何將這些價值觀影響編譯器的行爲?

回答

7

在VS2008中,您可以使用項目屬性設置屬性-> Build ->高級... ->調試信息。

4

我發現this MONO request可能會揭示'full'和'pdbonly'之間的區別。

CSC具有「pdbonly」 DEBUGTYPE該 生成PDBS,同時產生 運行時代碼,即優化,沒有 調試屬性等

這是能夠 重要獲得有用的堆棧跟蹤從 發行質量的代碼。

在我看來,2標籤(DebugSymbols和DebugType)的存在是多餘的。

+2

「獲得有用的棧跟蹤」 這是不正確。由於存在類型元數據,您將始終在.NET代碼中獲得有用的堆棧跟蹤。釋放風格中的PDB對於單步執行生產代碼非常重要,但由於優化,您可能會在調試器中發生錯誤。 – 2009-04-03 16:31:51

+0

@Daniel Bullington,你沒有得到沒有pdb文件的行號和文件名,這使得堆棧跟蹤至少「不太有用」 – tster 2013-09-06 16:15:27

6

在DEBUG:

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

在RELEASE:

<DebugSymbols>true</DebugSymbols> 
<DebugType>pdbonly</DebugType> 
<Optimize>true</Optimize> 
相關問題