0%

获取dump文件

获取dump文件

windows上获取dump文件

Winbg工具获取dump文件


打开Windbg,File->Attach to a process,选中崩溃的程序。
在command中输入[.dump /ma 要保存的文件完整路径名称],提示Dump successfully written后,就会生成一个dump文件。

.dump /ma G:\dump\dumprxzj.dmp

1、Hang模式
进程运行时,随时可以使用-hang参数得到一个Dump文件, 而不需要考虑线程是否真的处于死锁中,用于诊断高内存使用率, 高CPU使用率。
在hang模式下,dump file是以非侵入方式被抓取的, 并没有中断线程, 因此不需要跟启动进程有相同的身份,在客户端调试服务器时,hang模式抓取dump file很有用。

使用: 在命令行进入windbg所在目录,然后执行adplus -hang -pn Prs.exe -o c:/dump

2、Crash模式
在进程异常终止时抓取dump file。进程异常终止有3种情况:

unhandled的exception
asp.net进程由于iis reset或recycle而终止
出现heap毁坏,栈溢出,内存不足等错误,进程必须退出
使用:adplus -crash -pn w3wp.exe -NoDumpOnFirst

Adplus参数说明
-pn : 指定要分析的进程名。使用多个“-pn process name”开关来指定多个进程。

-o : dump file的存储路径,缺省为adplus所在路径

-FullOnFirst : create full dumps on first chance exceptions

-MiniOnSecond

-NoDumpOnFirst : 如果exception被try-catch block处理,使用这个参数就不会生成dump file

-NoDumpOnSecond :

-quiet : No dialog boxes will be displayed

命令:adplus -hang -pn rxzj.exe -o G:\dump -FullOnFirst

adplus -hang -pn w3wp.exe -o c:\dumps
该命令立刻把w3wp.exe的full dump抓取到c:\dumps文件夹内。

adplus -hang -p 81388 -o c:\dumps
该命令立刻把81388这个进程的full dump抓取到c:\dumps文件夹内。

adplus -crash -pn w3wp.exe -fullonfirst -o c:\dumps
adplus -crash -p 81388 -fullonfirst -o c:\dumps
该命令会通过监视进程w3wp.exe或81388的运行,在当第一次出现异常时记录一次完整的dump

adplus -crash -pn w3wp.exe -o c:\dumps
该命令也是在w3wp.exe崩溃时记录dump,但这是一个mini dump


通过dgbhelp获取dump文件


1
2
3
4
5
6
7
8
9
10
11
12
13
LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionInfo)
{
cout << "Enter TopLevelExceptionFilter Function" << endl;
HANDLE hFile = CreateFile(_T("project.dmp"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); //创建dmp文件
MINIDUMP_EXCEPTION_INFORMATION stExceptionParam;
stExceptionParam.ThreadId = GetCurrentThreadId();
stExceptionParam.ExceptionPointers = pExceptionInfo;
stExceptionParam.ClientPointers = FALSE;
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpWithFullMemory, &stExceptionParam, NULL, NULL); //写dmp文件
CloseHandle(hFile);
getchar();
return EXCEPTION_EXECUTE_HANDLER;
}