I know PDBs are generated for managed projects in .NET by giving the compiler the /debug argument. Is there a way to specify this in the VS (2005) GUI?
The only way I could get it to generate PDBs in release mode so far is to manually modify the .csproj file and to add :
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
under the 'release' settings:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
Another thing: I learned from MSDN here that the possible values for the DebugType
tag are:
full
pdbonly
none
How do these values affect the compiler's behaviour?
In VS2008, you can set the property using the project properties ->
Build ->
Advanced... ->
Debug Info.
In DEBUG:
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
In RELEASE:
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
I found this MONO request that may shed some light on what's the difference between 'full
' and 'pdbonly
'.
csc has a "pdbonly" debugtype that generates pdbs, while producing runtime code, i.e. optimised, no debugger attributes, etc.
This is important for being able to obtain useful stack traces from release-quality code.
It seems to me that the existance of the 2 tags (DebugSymbols and DebugType) is redundant.
来源:https://stackoverflow.com/questions/585397/how-to-generate-pdbs-for-net-managed-projects-in-release-mode