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文件