dbghelp.dll 定位异常奔溃信息

Posted briskzou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dbghelp.dll 定位异常奔溃信息相关的知识,希望对你有一定的参考价值。

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

以上是关于dbghelp.dll 定位异常奔溃信息的主要内容,如果未能解决你的问题,请参考以下文章

生成dmp文件用来分析软件出错信息

生成dmp文件用来分析软件出错信息

C++ 捕获程序异常奔溃minidump

如何追踪哪个应用程序将 dbghelp 注入所有其他进程?

生成dmp文件用来分析软件出错信息

Andriod之提示java.lang.SecurityException: getDataNetworkTypeForSubscriber导致程序奔溃