How to generate PDB's for .net managed project

2020-02-26 00:11发布

问题:

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?

回答1:

In VS2008, you can set the property using the project properties -> Build -> Advanced... -> Debug Info.



回答2:

In DEBUG:

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

In RELEASE:

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


回答3:

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.