Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get a PDB file for the EntityFramework NuGet package?

I'm trying to debug a StackOverflow in the EntityFramework NuGet package (version 6.1.3). In order to see the stack frames I need the PDB file for EntityFramework.DLL and EntityFramework.SqlServer.DLL. However, I can't seem to get Visual Studio to download this from either the MSFT symbol sources or from SymbolSource.org (I can get other System PDBs and things like NewtonSoft.json). Are the EF PDBs available anywhere?

like image 441
ChaseMedallion Avatar asked Aug 19 '15 20:08

ChaseMedallion


3 Answers

Now with pictures (as it took me about an hour of trial and fail)

  1. Get DotPeek from Jetbrains (Standalone version)

  2. Open DotPeek -> File -> Open -> browse to your project bin folder and open EntityFramework.dll

  3. Right mouse button on EntityFramework then choose Generate Pdb... enter image description here

enter image description here

  1. Go to folder where you exported it and open EntityFramework.pdb folder (I know right!) then dig deeper till you find a file EntityFramework.pdb and copy it to your bin folder (next to EntityFramework.dll).

  2. Go to Visual Studio -> DEBUG -> Options and Settings... -> Symbols then add your bin folder to Symbol file (.pdb) locations

enter image description here

  1. Run project and pray those breakpoints turn ripe red....

Edit: It sometimes starts running EF in optimized mode that renders debugging pretty much useless which is a whole point of this question - if this happens

  1. Go to Visual Studio -> Debug -> General -> (at the very bottom) Use Managed Compatibility Mode. Tick and Run project (if it gets optimized then untick and run, then tick again and run, then ....)

enter image description here

  1. To see if EF runs optimized without having to wait till it hits breakpoint Go to Visual Studio -> Debug -> Windows -> Modules. Then when you run solution modules (2) should appear. Click it and find EntityFramework.dll there should be column that says Optimized(Yes = bad, No = you can debug it).

enter image description here

Hope this saves you some time.

like image 188
Matas Vaitkevicius Avatar answered Oct 23 '22 12:10

Matas Vaitkevicius


Download the source code: entity framework on codeplex

The download button is in the sub-menu on the Source tab

Once downloaded:

  • Build the solution/project

  • Navigate to the bin directory NB: it is not in the normal location, its set to "..\..\bin\Debug\". See Project properties.

The EntityFramework.pdb and the EntityFramework.SqlServer.pdb are both there.

Also would of thought, it would be available by default or easier.

like image 13
Seabizkit Avatar answered Oct 23 '22 14:10

Seabizkit


One of the ways is to use dotpeek as symbol server (load entity framework dll and add dotpeek serer address copied from dotpeek settings) - what is great about this approach, that it generated pdb matching used dll version automatically, what is not so great - it will not contain original comments from source code, etc.

like image 4
Giedrius Avatar answered Oct 23 '22 12:10

Giedrius