minidump(dump命令)
C盘里的minidump文件夹里的文件可以删除吗
dmp文件是内存转储锋余文件,是在某一程序出枯宴现错误时自动把内存的内容存储到里面,供专业人员寻找错误原因以便进行调试。对大多数一般没基银用户而言是没有任何用处的,可以删除。如果不放心,可以先放入回收站,过一段时间没有什麽问题再彻底删除。
小存储器转储文件记录可帮助确定计算机为什么意外停止的最小的有用信息集。此选项要求启动卷上有一个至少为 2 MB的页面文件。
在运行 Microsoft Windows 2000或更高版本的计算机上,计算机每次意外停止时 Windows都会新建一个文件。这些文件的历史记录按照日期命名,存储在以下文件夹中,如:C:\WINDOWS\Minidump\Mini010806-02.dmp。
扩展资料:
C盘内容尽量隐藏。由于C盘的重要性最好不要随意将各种文件内容存入C盘,一般软件的默认路径为C:\Program Files\,所以尽量将一些文件安装到其他盘,否则电脑运行速度会越来越慢,不要随便把文件或游戏什么的放在C盘。
Silverlight是于Adobe Flash基本相同的软件,运行在浏览器中的插件。实现交互、动画等功能。使用XAML文件支持,支持.net运行库。
参考资料来源:百度百科-C盘
电脑c盘windows文件夹下minidump文件是什么
MiniDump:小存储器转储文件夹。
小存储器转储文件记录可帮助确定计算机为什么意外停止的最小的有用信息集。此选项要求此带如启动卷上有一个至少为 2 MB的页面文件。在运行 Microsoft Windows 2000或更高版本的计算机上,计算机每次意外停止时 Windows都会新建一个文件。行悔这些文件的历史记录按照日期命名,存储在以下文件夹中如: C:\WINDOWS\Minidump\Mini010806-02.dmp。
该转储文件类型包括以下信息:
消息及其参数和其他数据;
Stop加载的驱动程序的列表;
已停止的处理器的上下文(PRCB);
已停止的进程的信息和内核上下文(EPROCESS);
已停止的进程的信息和内核上下文(ETHREAD);
已停止的线程的内核模式调用堆栈。
当硬盘空间有限时,小存储器转储文件十分有用。但是,由于包括的信息有限,因此,通过分析此文件森启,可能无法发现并非由正在运行的线程在出现问题时直接导致的错误。
用于读取小存储器转储文件的工具:
可以使用转储检查实用工具(Dumpchk.exe)加载小存储器转储文件,还可以使用 Dumpchk.exe验证是否正确创建了存储器转储文件。转储检查实用工具不要求访问调试符号。Microsoft Windows 2000支持工具和 Microsoft Windows XP支持工具中包含有转储检查实用工具。
如何让程序抓到dump文件,MiniDumpWriteDump
程序崩溃(crash)的时候,为了以后能够调试分析问题,可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump文件。
步骤:
1)打开WinDBG并将之Attach到crash的程序进程
2)输入产生dump文件的命令
WinDBG产生dump文件的命令是.dump,可以选择不同的参数来生成不同类型的dump文件。
选项(1):/m
命令行示例:.dump/m C:\dumps\myapp.dmp
注解:缺省选项,生成标准的minidump,转储文件通常较小,便于在网络上通过邮件或其他方式传输。这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、进程信息和线程信息。
选项(2):/ma
命令行示例:.dump/ma C:\dumps\myapp.dmp
注解:带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境),推荐使用这中dump。
选项(3):/mFhutwd
命令行示例:.dump/mFhutwd C:\dumps\myapp.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 bMiniDumpSuccessful;
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;
bMiniDumpSuccessful= 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_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"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
如何查看minidump文件
小存储器转储文件MiniDump
小存储器转储文件记录可帮助确定计算机为什么意外停止的最小的有用信息集。此选项要求梁升启动卷上有一个至少为 2 MB的页面文件。在运行 Microsoft Windows 2000或更高版本的计算机上,计算机每次意外停止时 Windows都会新建一个文件。这橡型老些文件的历史记录按照日期命名,存储在以下文件夹中,如:
C:\WINDOWS\Minidump\Mini010806-02.dmp
该转储文件类型包括以下信息:
• Stop消息及其参数和其他数据
•加载的驱动程序的列表
•已停止的处理器的上下文(PRCB)
•已停止的进程的信息和内核上下文(EPROCESS)
•已停止的进程的信息和内核上下文(ETHREAD)
•已停止的线程的内核模式调用堆栈
当硬盘空间有限时,小存储器转储文件十分有用。但是,由于包括的信息有限,因此,通过分析此文件,可能无法发现并非由正在运行的线程在出现问题时直接导致的错误。
用于读取小存储器转储文件的工具
您可以使用转储检查实用工具(Dumpchk.exe)加载小存储器转储文件,还可以使用 Dumpchk.exe验证是否正确创建了存储器转储文件。转储检查实用工具不要求访问调试租镇符号。Microsoft Windows 2000支持工具和 Microsoft Windows XP支持工具中包含有转储检查实用工具。
关于本次minidump和dump命令的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。
本文来源于互联网,不代表趣虎号立场,转载联系作者并注明出处:https://www.quhuhao.com/wzfl/46021.html


微信扫一扫