Closed ctaggart closed 5 years ago
The default symbol cache ends up being %TEMP%\SymbolCache, so you will have a pingme.txt
in that folder. The format is pdb file name and then the pdb guid. The pdb guid is embedded in the dll and the portable pdb or windows pdb.
let printDllPdbGuid dll =
use reader = new PEReader(File.OpenRead dll)
if reader.HasMetadata then
let entries = reader.ReadDebugDirectory()
let codeViewEntry = entries |> Seq.find (fun entry -> entry.Type = DebugDirectoryEntryType.CodeView)
let codeView = reader.ReadCodeViewDebugDirectoryData codeViewEntry
printfn "%A" codeView.Guid
let printPdbGuid pdb =
use mrp = MetadataReaderProvider.FromPortablePdbStream(File.OpenRead(pdb))
let mr = mrp.GetMetadataReader()
let id = BlobContentId mr.DebugMetadataHeader.Id
printfn "pdb guid %s" (id.Guid.ToString("N").ToUpperInvariant())
May need to resurrect some old code:
get the Windows PDB GUID https://github.com/ctaggart/SourceLink/blob/v1.1.0/SourceLink/PdbFile.fs https://github.com/GitTools/GitLink/blob/develop/src/GitLink/Pdb/PdbFile.cs
check signature https://github.com/GitTools/GitLink/pull/177/files
The fact that the Visual Studio 2017 15.7.4 Enterprise Performance Profiler still doesn't support portable pdb files is really frustrating.
Improve NuGet package debugging and symbols experience https://github.com/NuGet/Home/issues/6104
NuGet Package Debugging & Symbols Improvements https://github.com/NuGet/Home/wiki/NuGet-Package-Debugging-&-Symbols-Improvements
Produce and upload symbols for Windows https://github.com/dotnet/coreclr/issues/10873
By default, the Microsoft System Servers are not enabled
because:
Without it enabled, performance profiling has issues: