• 各种dump方法


    dump的方法很多,各有特点,都应该掌握。

    dump分为两种:用户进程dump、系统dump。先说用户进程的dump。
    • 最简单的是在Win7的任务管理器中右键点击进程,选择Create Dump File。完成之后会弹出对话框说明dump文件的位置。这对于死锁进程的调试有帮助。
    • 用WinDbg也很方便。WinDbg是绿色版,直接拷贝整个目录即可使用。可以Attach到任意的进程中,然后用命令.dump xxx.dmp即可。
    • WinDbg提供了一个方便的脚本,可以直接取运行中进程的dump,完成后自动detach,尽量减少对运行中进程的影响,方便分析CPU占用过高、死锁等问题:
    adplus.vbs -hang -p 1234 -o d:\dump
    另外几个用法:
    adplus -crash -pn w3wp -quiet 抓w3wp进程,crash模式,当那个进程崩溃结束的时候自动抓取当时的内存

    adplus -hang -iis -quiet 抓IIS相关进程,包括其上host的web应用,以及iis自身

    • WinDbg本身也是查看分析dump文件的最常见工具,直接打开dump文件即可。分析dump的常用命令:
    !analyze -v 显示所有分析所需的常用信息。
    k/kb 显示调用堆栈。
    .ecxr 显示当前执行状态。

    .lastevent 查看上一个事件(异常也是事件的一种)

    • 执行WinDbg.exe -I会把WinDbg安装成默认的异常处理程序。如果某个程序崩溃,则自动调用WinDbg进入调试状态。这时候可以方便的取dump。
    • 如果安装了VS2005、VS2008,也可以作为默认的debugger,在Option里面可以设置。进程崩溃启动VS后,可以从菜单中选取dump功能。

    以上都是用户进程的dump方法,下面介绍系统dump(摘抄):
    • Dump文件有三种:完整内存转储,内核内存转储,小内存转储。System Properties中的高级选项中可以看到这些设置。
    完整内存转储太大,一般是物理内存大小或多一些,包括了用户进程页面,这种方式不实用,2GB的物理内存转储出来至少要2GB的磁盘空间(还有文件头信息)。内核转储一般是200MB大小(物理内存小于4GB),它只是包含了所有属于内核模式的物理内存。小内存转储一般是64KB(64位上是 128KB),这两种方式是更常用的。
    小内存转储在\Windows\Minidump下生成了一个叫Mini日期+序列号.dmp的文件,这个珍贵的资源就是系统Crash时刻的状态,只不过小内存转储只记录的有限的信息,而且在你分析时,如果windbg没有设置符号服务器的路径(关于符号服务器,请参考Windbg内核调试之二: 常用命令),那么你的当前系统必须和发生蓝屏的系统的Ntoskrnl.exe版本相同,否则就有找不到符号的问题产生。

    • 如果系统死锁了,而不是BSOD,可以设置快捷键抓取系统dump,按住Ctrl+ScrollLock+ScrollLock。导入如下注册表即可:
    Windows Registry Editor Version 5.00
    ;For PS/2 keyboards:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
    "CrashOnCtrlScroll"=dword:00000001
    ;For USB keyboards:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters]
    "CrashOnCtrlScroll"=dword:00000001
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl]
    "AutoReboot"=dword:00000000
    "CrashDumpEnabled"=dword:00000001
    "Overwrite"=dword:00000001

    "LogEvent"=dword:00000001

    如果发生了键盘没有ScrollLock的杯具,可以改变快捷键:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\crashdump]
    Dump1Keys=0x22
    Dump2Key=0x7e
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump]
    ;Rightmost CTRL key + Leftmost CTRL key
    Dump1Keys=0x22
    ;use pause/break key
    Dump2Key=0x7e
    设置:
    参考文档:
    http://msdn.microsoft.com/en-us/library/cc266483.aspx
    http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc
  • 相关阅读:
    Fix RICHTX32.OCX Issue on Windows 7
    Solved: c:\windows\system32\config\systemprofile\desktop
    递归的现实应用
    Win 8 app 获取窗口的宽度和高度, 本地化, 及文本读取
    均匀设计U Star 665
    GridView.ScrollIntoView() doesn't work
    XML节点访问与更新
    Keyboard supports in Software Testing
    WordPress程序备受喜爱的原因:十八般武艺
    paypal注册教程(PP注册教程)paypal使用方法
  • 原文地址:https://www.cnblogs.com/tinyfish/p/1616612.html
Copyright © 2020-2023  润新知