dbghelp.dll是一种调试跟踪相关模块,用于跟踪进程工作,在进程崩溃时收集程序产生异常时的堆栈信息,
以供开发人员分析,从而快速找到程序出现异常的原因。它的提供商是Microsoft。Windows 自带的这个文
件,位于C:WindowsSystem32 下。
需要的文件如下:
Dbghelp.h
dbghelp.lib
dbghelp.dll
使用示例:
1 LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionPointers) 2 { 3 //先创建dump文件 4 HANDLE lhDumpFile = CreateFileA("xxx.dmp", GENERIC_WRITE, 0, NULL, 5 CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 6 MINIDUMP_EXCEPTION_INFORMATION loExceptionInfo; 7 loExceptionInfo.ExceptionPointers = pExceptionPointers; 8 loExceptionInfo.ThreadId = GetCurrentThreadId(); 9 loExceptionInfo.ClientPointers = TRUE; 10 int nDumpType = MiniDumpNormal | MiniDumpWithDataSegs | MiniDumpWithFullMemory | 11 MiniDumpWithThreadInfo | MiniDumpWithHandleData | MiniDumpWithUnloadedModules; 12 //写dump文件 13 MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), lhDumpFile, (MINIDUMP_TYPE)nDumpType, &loExceptionInfo, NULL, NULL); 14 CloseHandle(lhDumpFile); 15 return EXCEPTION_EXECUTE_HANDLER; 16 } 17 18 int main(int argc, char** argv) 19 { 20 SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); 21 ...... 22 ...... 23 return 0; 24 }
定位异常需要以下三个文件:
xxx.dmp
xxx.exe
xxx.pdb
用visual stdio 打开.dmp文件,可以观察到异常的位置
用visual stdio 打开.dmp文件