Cristian Diaconescu
Cristian Diaconescu

Reputation: 35641

How to generate PDB's for .net managed projects in release mode?

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:

How do these values affect the compiler's behaviour?

Upvotes: 8

Views: 14893

Answers (3)

Daniel P. Bullington
Daniel P. Bullington

Reputation: 643

In DEBUG:

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

In RELEASE:

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

Upvotes: 8

Mehrdad Afshari
Mehrdad Afshari

Reputation: 421988

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

Upvotes: 7

Cristian Diaconescu
Cristian Diaconescu

Reputation: 35641

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.

Upvotes: 5

Related Questions