DLL 文件产生dump
来源:互联网 发布:高并发解决方案php 编辑:程序博客网 时间:2024/05/04 23:17
程序运行过程中不免会崩溃
有必要添加dump产生代码:
创建except.h
#ifndef _except_inc__#define _except_inc__#pragma once#include <DbgHelp.h>#include <Shlwapi.h>#pragma comment(lib, "dbghelp.lib")#pragma comment(lib, "shlwapi.lib")#ifndef CRASH_DUMP_FILE#define CRASH_DUMP_FILE _T("Crash.dmp")#endifstatic void DumpMiniDump(HANDLE hFile, PEXCEPTION_POINTERS excpInfo){if (excpInfo == NULL) {__try {RaiseException(EXCEPTION_BREAKPOINT, 0, 0, NULL);} __except(DumpMiniDump(hFile, GetExceptionInformation()),EXCEPTION_CONTINUE_EXECUTION) {}} else{MINIDUMP_EXCEPTION_INFORMATION eInfo;eInfo.ThreadId = GetCurrentThreadId();eInfo.ExceptionPointers = excpInfo;eInfo.ClientPointers = FALSE;MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),hFile,MiniDumpWithFullMemory,excpInfo ? &eInfo : NULL,NULL,NULL);}}static LONG WINAPI Local_UnhandledExceptionFilter(PEXCEPTION_POINTERS pExcept){TCHAR szModuleName[MAX_PATH] = {0};GetModuleFileName(NULL, szModuleName, MAX_PATH);PathRemoveFileSpec(szModuleName);PathAddBackslash(szModuleName);lstrcat(szModuleName, _T("Dump\\"));CreateDirectory(szModuleName, NULL);lstrcat(szModuleName, CRASH_DUMP_FILE);HANDLE hFile = CreateFile(szModuleName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH,NULL);if (hFile != INVALID_HANDLE_VALUE){DumpMiniDump(hFile, pExcept);CloseHandle(hFile);}return 0;}#endif然后再dllmain中调用SetUnhandledExceptionFilter(::Local_UnhandledExceptionFilter);即可;
#include "stdafx.h"#define CRASH_DUMP_FILE _T("dump.dmp")#include "..\..\include\except.h"BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){SetUnhandledExceptionFilter(::Local_UnhandledExceptionFilter);switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE;}
程序崩溃时就会在dump文件夹下产生dump文件,windbg调试时添加pdb文件即可指导程序不崩在什么第方 。
0 0
- DLL 文件 产生dump
- DLL 文件产生dump
- 嵌入式 产生core dump文件
- 一个产生dump文件类
- dump文件产生和定位
- 如何产生core dump文件
- VS2010 调试 dump 文件产生
- dump文件调试技巧(产生Dump文件)
- Qt程序捕捉异常,产生dump文件
- ubuntu下让崩溃的程序产生core dump文件
- “Runtime Error”不产生dump文件的解决办法
- 截取 SIGSEGV 将不会产生 core dump 文件
- 如果使Tomcat产生core和heap dump文件
- “Runtime Error”不产生dump文件的解决办法
- “Runtime Error”不产生dump文件的解决办法
- Linux 下如何产生core文件(core dump设置)
- 如果使Tomcat产生core和heap dump文件
- VC调用MATLAB 产生的dll文件
- .net 缓存
- iOS cell的复用
- Clairewd’s message
- 【转载】struts应用在断网情况下启动报错解决办法(java/net/AbstractPlainSocketImpl.java:178:-1)
- Android四大组件之Activity详解
- DLL 文件产生dump
- android studio快捷键
- leetcode 218. The Skyline Problem 使用PriorityQueue的java实现 以及细致分析
- Activity setContentView()处理流程
- 如何理解margin值为负
- Appium 获取元素控件及其属性
- 常用Linux指令
- Spark 日志配置
- 关于Hibernate的简单操作