2009-02-25 36 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> 
相关问题