问题
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?
回答1:
Now with pictures (as it took me about an hour of trial and fail)
Get DotPeek from Jetbrains (Standalone version)
Open
DotPeek
->File
->Open
-> browse to your projectbin
folder and openEntityFramework.dll
Right mouse button on
EntityFramework
then chooseGenerate Pdb...
Go to folder where you exported it and open
EntityFramework.pdb
folder (I know right!) then dig deeper till you find a fileEntityFramework.pdb
and copy it to yourbin
folder (next toEntityFramework.dll
).Go to
Visual Studio
->DEBUG
->Options and Settings...
->Symbols
then add yourbin
folder toSymbol file (.pdb) locations
- 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
- 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 ....)
- To see if
EF
runs optimized without having to wait till it hits breakpoint Go toVisual Studio
->Debug
->Windows
->Modules
. Then when you run solution modules (2) should appear. Click it and findEntityFramework.dll
there should be column that says Optimized(Yes
= bad,No
= you can debug it).
Hope this saves you some time.
回答2:
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.
回答3:
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.
来源:https://stackoverflow.com/questions/32104912/how-can-i-get-a-pdb-file-for-the-entityframework-nuget-package