This serie is the first of a long serie for rewriting the PDB debug format support in dbnghelp.
For historical reasons, builtin dbghelp always fully loads every debug information (type, symbol...) for a given module, and transforms it into an internal representation (common to all debug formats: stabs, dwarf*, PDB...).
This turns out to be slow and memory hungry. For example, using a chromium based DLL, where PDB file breaks the 4G size barrier, load time of debug info is ~80s, and requires ~20GB of virtual memory.
Target of rewrite: - break monolothic approach in dbghelp to allow finer granularity in what's loaded (moving to a per compilation unit approach instead of full module) - reduce memory usage (for above example, current rewrite state is 20MB of virtual memory, and <4s of load time) - (potential) degradation of performance for some requests + may need to load/peruse additional information (not loaded at once) + request code hasn't been optimized for performance (on purpose), so that we can balance performance vs in-process memory (caching some more bits)
We start with some series about cleanup, fixes, optimisation in dbghelp (that will favor all debug formats, not only PDB).
This serie: - fixes a crash for .DBG file - fixes >4G PDB loading (so that we can measure improvements ;-) - introduces a new approach for internal vector representation (reduces memory usage), - some cleanup,