crashdump电脑蓝屏显示:collecting data for crash dump 怎么处理啊,求高手帮忙解决!

crashdump  时间:2021-06-08  阅读:()

如何捕捉程序异常/crash 并生成 dump 文件

程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。

步骤: 1) 打开WinDBG并将之Attach 到crash的程序进程 2) 输入产生dump 文件的命令 WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump文件。

选项(1): /m 命令行示例:.dump /m C:dumpsmyapp.dmp 注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。

这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。

选项(2): /ma 命令行示例:.dump /ma C:dumpsmyapp.dmp 注解: 带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。

选项(3):/mFhutwd 命令行示例:.dump /mFhutwd C:dumpsmyapp.dmp 注解:带有数据段、非共享的读/写内存页和其他有用的信息的minidump。

包含了通过minidump能够得到的最多的信息。

是一种折中方案。

上面介绍如如何用WinDBG 生成crash dump 《WinDBG 技巧:如何生成Dump 文件(.dump 命令) 》,但是用户机器上通常不安装WinDBG, 而且多数用户也不知道怎么使用WinDBG。

所以最好是自己程序里面能够捕捉exception/crash,并且生成crash dump,然后通过网络传回到自己服务器。

捕捉exception 可以用API 函数 SetUnhandledExceptionFilter 。

生成crash dump 可以用DbgHelp.dll 里面的MiniDumpWriteDump 函数。

LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter( __in LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter ); BOOL WINAPI MiniDumpWriteDump( __in HANDLE hProcess, __in DWORD ProcessId, __in HANDLE hFile, __in MINIDUMP_TYPE DumpType, __in PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, __in PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, __in PMINIDUMP_CALLBACK_INFORMATION CallbackParam ); 【代码实例】 #include <dbghelp.h> #include <shellapi.h> #include <shlobj.h> // 自定义的exectpion filter LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS*pExceptionPointers) { SetErrorMode( SEM_NOGPFAULTERRORBOX ); //收集信息 CStringW strBuild; strBuild.Format(L"Build: %s %s", __DATE__, __TIME__); CStringW strError; HMODULE hModule; WCHAR szModuleName[MAX_PATH] = L""; GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,(LPCWSTR)pExceptionPointers->ExceptionRecord->ExceptionAddress,&hModule); GetModuleFileName(hModule, szModuleName, ARRAYSIZE(szModuleName)); strError.AppenedFormat(L"%s %d , %d ,%d.",szModuleName,pExceptionPointers->ExceptionRecord->ExceptionCode,pExceptionPointers->ExceptionRecord->ExceptionFlags,pExceptionPointers->ExceptionRecord->ExceptionAddress); //生成 mini crash dump BOOL essful; WCHAR szPath[MAX_PATH]; WCHAR szFileName[MAX_PATH]; WCHAR* szAppName = L"AppName"; WCHAR* szVersion = L"v1.0"; DWORD dwBufferSize = MAX_PATH; HANDLE hDumpFile; SYSTEMTIME stLocalTime; MINIDUMP_EXCEPTION_INFORMATION ExpParam; GetLocalTime( &stLocalTime ); GetTempPath( dwBufferSize, szPath ); StringCchPrintf( szFileName, MAX_PATH, L"%s%s", szPath, szAppName); CreateDirectory( szFileName, NULL ); StringCchPrintf( szFileName, MAX_PATH, L"%s%s\%s-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp", szPath, szAppName, szVersion, stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay, stLocalTime.wHour, stLocalTime.wMinute,stLocalTime.wSecond, GetCurrentProcessId(), GetCurrentThreadId()); hDumpFile = CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0,0); MINIDUMP_USER_STREAM UserStream[2]; MINIDUMP_USER_STREAM_INFORMATION UserInfo; UserInfo.UserStreamCount = 1; UserInfo.UserStreamArray = UserStream; UserStream[0].Type = CommentStreamW; UserStream[0].BufferSize = strBuild.GetLength()*sizeof(WCHAR); UserStream[0].Buffer = strBuild.GetBuffer(); UserStream[1].Type = CommentStreamW; UserStream[1].BufferSize = strError.GetLength()*sizeof(WCHAR); UserStream[1].Buffer = strError.GetBuffer(); ExpParam.ThreadId = GetCurrentThreadId(); ExpParam.ExceptionPointers = pExceptionPointers; ExpParam.ClientPointers = TRUE; MINIDUMP_TYPE MiniDumpWithDataSegs = MiniDumpNormal | MiniDumpWithHandleData | MiniDumpWithUnloadedModules | MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory | MiniDumpWithProcessThreadData | MiniDumpWithThreadInfo; essful = MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(), hDumpFile, MiniDumpWithDataSegs, &ExpParam, NULL,NULL); // 上传mini dump 到自己服务器(略) ... return EXCEPTION_CONTINUE_SEARCH; //或者 EXCEPTION_EXECUTE_HANDLER 关闭程序 } int _tmain() { // 设置 execption filter SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); .... return 0; } 正常情况下不会生成dump,需要自己在程序中添加代码实现,一般是利用MS的dbghelp.dll提供的DbgHelpCreateUserDump来生成,用WinDbg来分析,期间需要编译程序生成的.pdb文件。

可以参考BlackBox、google breakpad等 crash 文件生成的路径: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionAeDebug] "Auto"="0" "Debugger"=""D:\WinDBG\ntsd.exe" -p %ld -e %ld -g -noio -c ".dump /ma /u d:\dbgdmp\dmp.dmp; q" "UserDebuggerHotKey"=dword:00000000 转载仅供参考,版权属于原作者。

祝你愉快,满意请采纳哦

电脑蓝屏显示:collecting data for crash dump 怎么处理啊,求高手帮忙解决!

一 先简单地排除硬件过热或接触不良的原因,步骤: 断掉电源后,打开主机; 清理所有的灰尘; 更换CPU、显卡及其它芯片散热器的散热膏; 取下内存条和显卡,用橡皮擦擦拭金色触点,再装好; 重新拔插主板的电源线; 重新拔插硬盘的数据线和电源线; 然后插好电源,开机看一下能否进入系统。

二 如果不能进入,使用原版windows镜像文件重新安装系统(同时格式化系统分区),再下载和安装硬件官方对应硬件型号、对应操作系统的驱动程序。

先不安装应用程序,再试一下。

阿里云金秋上云季,云服务器秒杀2C2G5M年付60元起

阿里云(aliyun)在这个月又推出了一个金秋上云季活动,到9月30日前,每天两场秒杀活动,包括轻量应用服务器、云服务器、云数据库、短信包、存储包、CDN流量包等等产品,其中Aliyun轻量云服务器最低60元/年起,还可以99元续费3次!活动针对新用户和没有购买过他们的产品的老用户均可参与,每人限购1件。关于阿里云不用多说了,国内首屈一指的云服务器商家,无论建站还是学习都是相当靠谱的。活动地址:h...

Spinservers:美国圣何塞机房少量补货/双E5/64GB DDR4/2TB SSD/10Gbps端口月流量10TB/$111/月

Chia矿机,Spinservers怎么样?Spinservers好不好,Spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting So...

Sharktech:美国/荷兰独立服务器,10Gbps端口/不限流量/免费DDoS防护60G,319美元/月起

sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。此文只整理他们家10Gbps专用服务器,此外该系列所有服务器都受到高达 60Gbps(可升级到 100Gbps)的保护。...

crashdump为你推荐
李智慧李智慧和韩智慧是一个人吗?个人的详细资料怎样的?视频技术短视频运营每天的工作是做什么?需要所学的技术都有什么方面?模式识别算法模式识别、神经网络、遗传算法、蚁群算法等等人工智能算法需要哪些数学知识?数据统计分析表怎样建立数据透视表和数据分析表?什么是生态系统生态系统的我主要特征是什么?腾讯贴吧QQ贴吧如何发帖网络备份网络系统备份的主要目的以及网络系统备份体系主要包括哪几方面?汤不热福利汤不燥热的??web推送javaweb写的聊天网页是如何向客户端发送消息?挂qq网站那有挂QQ的网站啊
域名估价 中国域名网 wordpress主机 瓦工 bash漏洞 174.127.195.202 mobaxterm 淘宝双十一2018 一元域名 e蜗 服务器是干什么的 vip购优惠 免费申请网站 支持外链的相册 国内空间 脚本大全 ncp是什么 web是什么意思 服务器是什么意思 weblogic部署 更多