southpolenator / sharppdb Goto Github PK
View Code? Open in Web Editor NEWLibrary for reading PDB files, both Windows and PortablePDBs.
License: MIT License
Library for reading PDB files, both Windows and PortablePDBs.
License: MIT License
https://github.com/southpolenator/SharpPdb/blob/master/Source/Windows/PDBFile.cs#L113
this line access the field File, but it is not set for this constructor, and will throw NullReferenceException
https://github.com/southpolenator/SharpPdb/blob/master/Source/Windows/PDBFile.cs#L92
Using dbhelp we can get the size of the public symbol / function. SharpPdb only provides the RVA but not the size. Is there a way to get the size somehow?
PDB symbols seem to have the incorrect RVA (or maybe the RVA is different from the one I'm expecting.)
Here is a comparison between the RVA calculated using the dbghelp
Win32 functions and the RVA from SharpPdb
:
PDB file: clr.pdb
Symbol: g_pGCHeap
RVA from dbghelp: A17038
RVA from SharpPdb: A25A60
0:000> dt _LIST_ENTRY
ntoskrnl!_LIST_ENTRY
+0x000 Flink : Ptr64 _LIST_ENTRY
+0x008 Blink : Ptr64 _LIST_ENTRY
How can I know there are two pointers in _LIST_ENTRY?
I would like to use this as a replacement for dbghelp. But I'm struggling with getting the export symbols from system modules such as Kernel32.dll. Dbghelp has no issues with these files, even when I'm offline (its not downloading any pdb files from the internet). Any idea?
Can you enable symbol package (.snupkg) creation and publishing for the SharpPdb nuget package - see here
Hey @southpolenator
I hope you are still somehow around and maintaining this project. I was planning to use SharpPdb instead of the Native DIA COM interface as it is super slow and the type model exposed by SharpPdb is very useful.
Unfortunately I noticed that a lot of user defined types are missing when loading my PDB and a lot of them are essential for my purpose.
Unfortunately I cannot share the related binaries but I was wondering if you have some ideas on how I could troubleshoot this. One of the missing type is a simple C# class with various members and a base class, nothing special about it.
I wonder if my PDB is an unsupported version? I noticed that there are 2 "TypeLeafKinds" with many records in the TpiStream:
If I count the DIA symbols by GetUdtKind()
I get those numbers:
If I count the PdbSharp TypeRecords by TypeLeafKind I get those numbers with many classes less:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.