首页
社区
课程
招聘
[求助]MiniDumpWriteDump失败
发表于: 2010-11-25 16:19 7410

[求助]MiniDumpWriteDump失败

2010-11-25 16:19
7410
最近在调试一个服务器程序时, 发布版会崩溃.
我使用下面代码在程序崩溃时生成dmp
#include <dbghelp.h>
#pragma comment(lib, "Dbghelp.lib")

// dmp输出
inline LONG WINAPI UnhandledFilter(struct _EXCEPTION_POINTERS *lpExceptionInfo)
{
        LONG ret = EXCEPTION_EXECUTE_HANDLER;
        TCHAR szFileName[64];
        SYSTEMTIME st;
        ::GetLocalTime(&st);
        wsprintf(szFileName, TEXT("%04d-%02d-%02d-%02d-%02d-%02d-%02d-%02d.dmp"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, rand()%100);

        HANDLE hFile = ::CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
        if (hFile != INVALID_HANDLE_VALUE)
        {
                MINIDUMP_EXCEPTION_INFORMATION ExInfo;

                ExInfo.ThreadId = ::GetCurrentThreadId();
                ExInfo.ExceptionPointers = lpExceptionInfo;
                ExInfo.ClientPointers = false;

                // write the dump

                BOOL bOK = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL );

                if (bOK)
                {
                        printf("Create Dump File Success!\n");
                }
                else
                {
                        printf("MiniDumpWriteDump Failed: %x\n", GetLastError());
                }

                ::CloseHandle(hFile);

        }
        else
        {
                printf("Create File %s Failed %d\n", szFileName, GetLastError());
        }
        return ret;
}

inline void RegisterMiniDump()
{
        ::SetUnhandledExceptionFilter(UnhandledFilter);
}
在多数情况下可以生成一个dmp文件, 不过最近遇到的情况它返回false GetLastError()好象是个-214xxxxx看起来像是,很长一个.
想问下什么情况下会dmp生成不了? 大家都是怎么来生成dmp的.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我的电脑属性-高级-启动和恢复故障的设置  跳出一个对话框
在“写入调试信息”下拉菜单中选则 “完全内存转存”

祝你好运,我也不敢确定没问题。你先试试吧,如果可行告知我下 呼呼
2010-11-26 10:31
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顺便说下我也是这么得到DUMP文件的。这个代码基本一致
我没用inline 呵呵。
2010-11-26 10:33
0
雪    币: 194
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有没有inline都无所谓的,因为我这是单独写在一个头文件中的
2010-11-29 09:52
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我没辙了  帮顶吧
2010-11-29 10:25
0
雪    币: 194
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
属性设置是针对蓝屏的吧,是指系统的,不是应用程序的.
2010-11-29 10:56
0
游客
登录 | 注册 方可回帖
返回
//