如何允许 WinXP 和 Win7 自动创建 dump 文件

如何允许 WinXP 和 Win7 自动创建 dump 文件,第1张

Part 1,在 Windows 7 下,默认情况下 dump 文件的自动生成是关闭的。要开启这个功能需要新建这样一个key --

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/Windows Error Reporting/LocalDumps,并在该 key 下按照下表进行如下配置。

对于表中这些项,没必要全部定义。一般情况下,定义一个 DumpFolder 并将 DumpType设置为 2 就可以了,这样就可以在指定目录下生成 full dump 文件。

这个 key 的作用域是全局的。你也可以为指定的进程配置单独的设置来覆盖全局设置。要为指定进程创建调试设置,你需要以进程名字 MyApplication.exe创建一个形如HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Windows Error Reporting/LocalDumps/MyApplication.exe 的key,并在该 key 下如法炮制上表中的选项。这样,当MyApplication.exe crash 的时候, *** 作系统会首先读取全局设置,然后再读取该进程自己的设置,并用这个局部设置去覆盖全局设置。

Part 2,在 Windows XP下,配置方法略有不同。Windows XP 自带了一个调试工具 Dr.Watson 可以用来自动生成 dump 文件。通过在<Start>菜单中<Run>输入drwtsn32 可以启动它。具体配置方法是在注册表下面的 key 下配置 <Debugger>的值即可。当然,64-bit 的 Windows XP 需要 branch 到Wow6432Node\ 下对应的路径。注意,参数 –p 可以用来指定特定进程ID。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]

"Auto"="1"

"Debugger"="\"DRWTSN32\" -p %ld -e %ld"

"UserDebuggerHotKey"=dword:00000000

如下图所示,Dr.Watson 会根据相应的 options 和路径,生成相应的 dump 文件和 log 文件。在下面的 Application Errors 一栏中,可以看到进程 crash 的历史记录。log 文件也很有用,它是把一些内存信息 dump 到文本文件中了。

当然,在同样的 key 下配置 <Debugger>的值为 WinDebug 。这样可以将其设置为 Just-In-Time Debugger,异常发生的时候 WinDebug 会自动被运行起来,crash 的进程会被中断到调试器中。别忘记将 WinDebug 的安装目录添加到 PATH 中。Note: Just in time (JIT) debugger is used at time of exception and gives you the possibility to check the state of the application at run time. Post mortem debugging is used when trying to figure out what has happened to an already crashed application, i.e. investigating the state of the application through a dump file. 这里,在cmd-line 里输入 "windbg -I"或者“windbg –IS” (静默模式) 则可以将 WinDebug 设置为 default debugger。另外,输入”windbg -IA” or “windbg -IAS”(静默模式)会让 WinDebug 自动关联 *.dmp 文件。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]

"Debugger"="C:\\Program Files\\Debugging Tools for Windows (x86)\\windbg.exe -p %ld -e %ld"

最后,你也可以在同样的 key 下配置 <Debugger>的值为 Visual Studio 的 Debugger。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]

"Debugger"="C:\\Program Files\\Debugging Tools for Windows (x86)\\VSJITDebugger -p %ld -e %ld"

Reference

[1] http://trifoliummedium.blogspot.de/2011/03/installing-windbg-as-default-jit-and.html

[2] http://xmuxsp.blog.51cto.com/144876/133192

[3] http://www.networkworld.com/news/2005/041105-windows-crash.html

[4] http://msdn.microsoft.com/en-us/library/windows/desktop/ee416349(v=vs.85).aspx

<EOF>

方法1:

一般当出现APPCRASH错误时,会提示失败模块的名称,比如XXXX.DLL,这样我们就可以百度这个DLL属于哪个文件,找到程序,如果不是很重要就卸载,看看是否会再次出现失败。

方法2:

1.使用清理软件,如360清理IE插件等未使用的插件;

2.然后 *** 作时进入Msconfig回车,启动时取消启动项目,只保留输入法ctfmon

3.重启后,不会失败。

方法3:

1.崩溃发生后,系统会生成一个Dump文件,这是进程的内存映像。Win7上的转储文件一般保存在c: windows minidump目录下,只有获得管理员权限才能访问。

2.要分析崩溃,从转储文件开始。在Windbg中,可以通过菜单“文件”“打开崩溃转储”打开转储文件进行分析,如下图所示:

加载转储文件后,输入:在windbg底部的命令栏中。分析-v进行分析。是windbg的扩展命令,analyze是扩展命令,而-v是参数。

通过以上 *** 作,可以有效解决APPCRASH错误的问题。其实巨型错误是由软件冲突引起的,所以我们只要卸载相应的文件就可以解决问题。但是,如果实在不行,建议重新安装系统!

登录/注册

内核内存转储文件(即dump文件)无法产生解决方法

原创6787 阅读

zhaoming1987871

2010-02-02 10:28:08

关注

内核内存转储文件可能不会生成基于 Windows Server 2008 上或 Windows Vista Service Pack 1 (SP1)-基于计算机。

系统事件日志中会有如下记录:

事件 ID: 49

事件类型: 错误

事件源: volmgr

说明: 配置失败的故障转储的页面文件。 请确保在启动分区上的页面文件,并且是足够大,以包含所有的物理内存。

解决方法:

1.打开注册表,在开始运行框中键入 regedit。

2.找到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl

新建,然后单击 DWORD 值。

键入 IgnorePagefileSize,然后按 ENTER。

然后单击 修改。

在 数值数据 框中键入 1,然后单击 确定。

退出注册表编辑器。

3.重新启动系统中的更改才能生效。(必须重启机器否则不会生效)

下面介绍收集dump文件需要注意的地方(视具体环境而定):

1.修改pagefile大小:修该注册表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\control\Session Manager\memory management\

如下:

PagingFiles REG_MULTI_SZ C:\pagefile.sys 22000 30000

2.更改dump文件存放位置,

修改注册表项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl

下的"Dumpfile"将其修改为 D:\memory.dmp

Private build 包含一个修改过的系统内核,在内核中我们将所有软件路径进入的重启都进行截获,然后再使系统进入蓝屏。这个过程中您会发现我们正常的重启 *** 作也会经过蓝屏步骤,请不必但心,这属于正常的行为。但是,如果因为意外断电或者某些硬件问题导致的重启,这个内核是无法捕获的。

Private 内核配置步骤:

=================

1. 首先,在注册表中检查蓝屏后自动重启键值的设定。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl 下的”AutoReboot” 必须是”0”.这样可以确保发生蓝屏后服务器可以停止在蓝屏模式下被我们观察到.

2. 请到微软官网下载Private build. Ntkrnlmp.exe 并保存到服务器的 \系统盘符:\windows\system32\目录下。

3.以管理员身份打开命令行,输入:bcdedit /set kernel ntkrnlmp.exe. 然后重启服务器使以上设置生效。

4. 重启后,请按F8 键进入Advanced Boot Options, 然后选择”Disable Driver Signature Enforcement” .服务器便会使用Ntkrnlmp.exe 作为内核来使用。

5. 这时,请继续观察服务器的状态。并在发生意外蓝屏后,将时间点记录下来,然后通过电源键重启服务器。重启后,请将系统日志和memory dump 文件上传给我们分析。

6. 当问题得到解决后,我们需要禁止这个功能。

禁用Private build 的方法:

=====================

(1) 在windows 2008 系统上,打开命令行

(2) 输入: bcdedit /deletevalue kernel 然后回车。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11537909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存