永发信息网

如何手动产生windows系统的完全内存dump

答案:2  悬赏:60  手机版
解决时间 2021-02-20 00:38
如何手动产生windows系统的完全内存dump
最佳答案
Windbg生成dump文件的方法:
程序崩溃(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能够得到的最多的信息。是一种折中方案
那怎么自动生成dump文件呢,比如对方的电脑没有windbg,这里用到一个window系统自带工具,Dr.Watson
运行方式很简单:
直接run-输入drwtsn32 -i就可以了,会提示这样的:

这个命令真难记,实话,记华生医生吧,福尔摩斯中的
如果有程序崩溃,会自动生成dump,这时再输入drwtsn32就会运行这个程序:

找到对应路径的DMP文件就行了,一般放在如下路径:
C:\Documents and Settings\All Users\Application Data\Microsoft\Dr Watson
以下实例来自AWD
代码:
Copyright (c) Advanced Windows Debugging (ISBN 0321374460) from Addison-Wesley Professional. All rights reserved.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.

--*/
#include "stdafx.h"
#include
#include
#include

VOID SimulateMemoryCorruption ( ) ;

class CAppInfo
{
public:
CAppInfo(LPWSTR wszAppName, LPWSTR wszVersion)
{
m_wszAppName=wszAppName;
m_wszVersion=wszVersion;
}

VOID PrintAppInfo()
{
wprintf(L"\nFull application Name: %s\n", m_wszAppName);
wprintf(L"Version: %s\n", m_wszVersion);
}

private:
LPWSTR m_wszAppName ;
LPWSTR m_wszVersion ;
} ;

CAppInfo* g_AppInfo ;

int __cdecl wmain (int argc, WCHAR* args[])
{
wint_t iChar = 0 ;
g_AppInfo = new CAppInfo(L"Memory Corruption Sample", L"1.0" );
if(!g_AppInfo)
{
return 1;
}

wprintf(L"Press: \n");
wprintf(L" 1 To display application information\n");
wprintf(L" 2 To simulated memory corruption\n");
wprintf(L" 3 To exit\n\n\n>");

while((iChar=_getwche())!='3')
{
switch(iChar)
{
case '1':
g_AppInfo->PrintAppInfo();
break;

case '2':
SimulateMemoryCorruption();
wprintf(L"\nMemory Corruption completed\n");
break;

default:
wprintf(L"\nInvalid option\n");
}
wprintf(L"\n\n> ");
}
return 0;
}

VOID SimulateMemoryCorruption ( )
{
char* pszWrite="Corrupt";
BYTE* p=(BYTE*) g_AppInfo;
CopyMemory(p, pszWrite, strlen(pszWrite));
}
全部回答
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
阿珍快餐小炒早餐在哪里啊,我有事要去这个地
下图答案,急!!
电脑对人体辐射大吗?
大量无包装海盐的最佳库存方式是()。A.货架
天茂温莎园西门地址在什么地方,想过去办事
供给侧改革影响的分析需要哪些数据
惠而浦洗衣机上海产的和安微产的有区别吗
晚上在卧室里打开电筒看见很多飘浮物呼吸了好
为了更准确地了解唇舌部位的病变范围和性质,
东港海鲜大排档地址有知道的么?有点事想过去
单选题斯堪的纳维亚半岛西侧崖壁陡峭,幽深曲
第一次插入u盾时没有设置交易密码怎么办?
【跪求】班会班会!要搞笑一点!
下列关于无粘结预应力筋技术要求,说法错误的
农村信用社金溪信用社我想知道这个在什么地方
推荐资讯
昨天跟男朋友生气了,今天一天他都没理我该怎
和顺一号隧道地址在哪,我要去那里办事
鹦鹉喜欢什么
琅琊榜梁王不是梁武帝吧,到底历史上有没有林
天天康平价大药房戎州路店地址在什么地方,想
御香厨三国卤肉私房菜我想知道这个在什么地方
清朝前期君主集权强化的表现有哪些
长沙西站到吉首的汽车是到哪个站
4亿乘以300等于多少,10年又是多少,够做什么
新疆医科大学我想知道这个在什么地方
新天龙八部怎么强化装备
征途80级小号刷什么怪爆魂魄石
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?