DbgHelp.dll 是 Windows 系统自带的调试辅助动态库,通常位于 C:\Windows\System32。它把符号解析、地址翻译、调用栈遍历、崩溃转储等能力封装成统一的 Symbol Handler API,向上支撑 WinDbg、Visual Studio 调试器、ProcDump、Crashpad 等工具,向下依赖 DbgCore.dll、Symsrv.dll、SrcSrv.dll 协同工作。
SymInitialize / SymCleanup 负责符号引擎的创建与释放;SymLoadModuleEx 把目标进程或外部模块注册进符号表,记录模块基址、大小与 PDB 标识(GUID + Age),为后续符号匹配提供基准。
SymFromAddr 把崩溃地址解析为“函数名 + 偏移”,SymGetLineFromAddr64 进一步映射到源文件与行号,SymGetModuleInfo64 定位所属模块,SymGetTypeInfo 还原结构体与类型布局。
StackWalk64 基于 STACKFRAME64 结构与内存读取回调,逐帧还原跨模块调用链,是崩溃报告中“调用堆栈”一栏的数据来源,也是分析死循环、递归溢出与内存踩踏的关键依据。
MiniDumpWriteDump 支持从 MiniDumpNormal 到 MiniDumpWithFullMemory 的多个转储等级,WerFault、Crashpad、Breakpad 等崩溃上报框架均通过它落地 dump 文件;MiniDumpReadDumpStream 则用于离线读取。
通过 _NT_SYMBOL_PATH 与 SYMOPT_DEFERRED_LOADS 等选项配合 SymSrv.dll,按 PDB 的 GUID + Age 从符号服务器按需下载符号;再由 SrcSrv.dll 依据源索引关联源码,实现源码级定位。