相关文章推荐
果断的移动电源  ·  加快塑造充分释放人才红利·  8 月前    · 
虚心的牛肉面  ·  装甲掷弹兵:台湾军队空防能力如何?20年前就 ...·  8 月前    · 
正直的棒棒糖  ·  The Effect of ...·  10 月前    · 
飞奔的大脸猫  ·  风流的关汉卿消了纳妾意,竟因妻子打油诗_手机搜狐网·  10 月前    · 
慷慨大方的柚子  ·  2023年指甲剪推荐,应对不同剪甲需求的指甲 ...·  1 年前    · 
Code  ›  程序发生崩溃dump文件_failed to create dump file开发者社区
dump文件
https://cloud.tencent.com/developer/article/2131900
侠义非凡的板栗
6 月前
全栈程序员站长

程序发生崩溃dump文件_failed to create dump file

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
全栈程序员站长
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 程序发生崩溃dump文件_failed to create dump file

程序发生崩溃dump文件_failed to create dump file

作者头像
全栈程序员站长
发布 于 2022-10-01 16:42:25
1.3K 0
发布 于 2022-10-01 16:42:25
举报
文章被收录于专栏: 全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

之前在win xp和win7没有问题,用了win10就出问题了.

解决办法:VirtualProtect函数使用VirtualProtectEx代替即可!

所有代码如下:

代码语言: javascript
复制
#ifndef __DUMP_H__
#define __DUMP_H__
#include <stdlib.h>
#include <stdio.h>
#include <ostream>
#ifdef _MSC_VER
#include <windows.h>
#include <DbgHelp.h>
#pragma comment(lib, "dbghelp.lib")
#ifndef _M_IX86  
#error "The following code only works for x86!"  
#endif  
inline BOOL IsDataSectionNeeded(const WCHAR* pModuleName)
if (pModuleName == 0)
return FALSE;
WCHAR szFileName[_MAX_FNAME] = L"";
_wsplitpath_s(pModuleName, NULL, 0, NULL, 0, szFileName, _MAX_FNAME, NULL, 0);
if (_wcsicmp(szFileName, L"ntdll") == 0)
return TRUE;
return FALSE;
inline BOOL CALLBACK MiniDumpCallback(PVOID                            pParam,
const PMINIDUMP_CALLBACK_INPUT   pInput,
PMINIDUMP_CALLBACK_OUTPUT        pOutput)
if (pInput == 0 || pOutput == 0)
return FALSE;
switch (pInput->CallbackType)
case ModuleCallback:
if (pOutput->ModuleWriteFlags & ModuleWriteDataSeg)
if (!IsDataSectionNeeded(pInput->Module.FullPath))
pOutput->ModuleWriteFlags &= (~ModuleWriteDataSeg);
case IncludeModuleCallback:
case IncludeThreadCallback:
case ThreadCallback:
case ThreadExCallback:
return TRUE;
default:;
return FALSE;
inline void CreateMiniDump(EXCEPTION_POINTERS* pep, LPCTSTR strFileName)
HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE))
MINIDUMP_EXCEPTION_INFORMATION mdei;
mdei.ThreadId = GetCurrentThreadId();
mdei.ExceptionPointers = pep;
mdei.ClientPointers = NULL;
MINIDUMP_CALLBACK_INFORMATION mci;
mci.CallbackRoutine = (MINIDUMP_CALLBACK_ROUTINE)MiniDumpCallback;
mci.CallbackParam = 0;
//dump信息较多
MINIDUMP_TYPE mdt = (MINIDUMP_TYPE)(
MiniDumpWithPrivateReadWriteMemory |
MiniDumpWithFullMemory |
MiniDumpWithDataSegs |
MiniDumpWithHandleData |
MiniDumpWithFullMemoryInfo |
MiniDumpWithThreadInfo |
MiniDumpWithUnloadedModules |
MiniDumpWithIndirectlyReferencedMemory |
MiniDumpWithFullAuxiliaryState |
MiniDumpWithPrivateWriteCopyMemory |
MiniDumpIgnoreInaccessibleMemory |
MiniDumpWithTokenInformation |
MiniDumpFilterMemory
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),
hFile, mdt, (pep != 0) ? &mdei : 0, 0, &mci);
//MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, (pep != 0) ? &mdei : 0, NULL, &mci);  //普通dump,小
CloseHandle(hFile);
std::ostream& operator<<(std::ostream& os, const EXCEPTION_RECORD& red)
return os << "   Thread ID:" << GetCurrentThreadId()
<< "   ExceptionCode: " << red.ExceptionCode << "/n"
<< "   ExceptionFlags: " << red.ExceptionFlags << "/n"
<< "   ExceptionAddress: " << red.ExceptionAddress << "/n"
<< "   NumberParameters: " << red.NumberParameters;
LONG WINAPI GPTUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionInfo)
FILE *fp;
fopen_s(&fp, "DumpInfo.txt", "a+");
char buffer[256];
sprintf_s(buffer, "%s", "   Server Dead,CreatDump!!\n");
static char __time[1024];
SYSTEMTIME s;
GetLocalTime(&s);
sprintf_s(__time, "[%d-%d-%d %d:%d:%d]", s.wYear, s.wMonth, s.wDay, s.wHour, s.wMinute, s.wSecond);
fwrite(__time, strlen(__time), 1, fp);
fwrite(buffer, strlen(buffer), 1, fp);
fclose(fp);
//StackWalker sw;
//sw.ShowCallstack();//actionlog.txt
CreateMiniDump(pExceptionInfo, "Exception.dmp");
//std::cerr << "未知错误:" << (*pExceptionInfo->ExceptionRecord) << std::endl;
//exit(pExceptionInfo->ExceptionRecord->ExceptionCode);
return EXCEPTION_EXECUTE_HANDLER;    // 程序停止运行
// 此函数一旦成功调用,之后对 SetUnhandledExceptionFilter 的调用将无效  
void DisableSetUnhandledExceptionFilter()
void* addr = (void*)GetProcAddress(LoadLibrary("kernel32.dll"), "SetUnhandledExceptionFilter");
if (addr && !IsBadReadPtr(addr, sizeof(void*)))
unsigned char code[16];
int size = 0;
code[size++] = 0x33;
code[size++] = 0xC0;
code[size++] = 0xC2;
code[size++] = 0x04;
code[size++] = 0x00;
DWORD dwOldFlag, dwTempFlag;
if (VirtualProtectEx(GetCurrentProcess(), addr, size, PAGE_EXECUTE_READWRITE, &dwOldFlag) == 0)
return;
WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
VirtualProtectEx(GetCurrentProcess(), addr, size, dwOldFlag, &dwTempFlag);
void InitMinDump()
//注册异常处理函数  
 
推荐文章
果断的移动电源  ·  加快塑造充分释放人才红利
8 月前
虚心的牛肉面  ·  装甲掷弹兵:台湾军队空防能力如何?20年前就看出来了_手机新浪网
8 月前
正直的棒棒糖  ·  The Effect of Diaphragmatic Breathing on Attention, Negative Affect ...
10 月前
飞奔的大脸猫  ·  风流的关汉卿消了纳妾意,竟因妻子打油诗_手机搜狐网
10 月前
慷慨大方的柚子  ·  2023年指甲剪推荐,应对不同剪甲需求的指甲剪推荐- 知乎
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号