配置自动调试

用户可以配置自动调试来帮助他们确定系统或应用程序停止响应的原因。

为系统崩溃配置自动调试

若要将目标计算机配置为在系统停止响应时生成崩溃转储文件,请使用“控制面板”中的“系统”应用程序。 单击“高级系统设置”,这将显示“系统属性”对话框。 在该框的“高级”选项卡上,单击“启动和恢复”下的“设置”,然后使用相应的恢复选项。 或者,可以使用以下注册表项配置崩溃转储选项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

可以指定的文件是崩溃转储文件。 其默认名称为 Memory.dmp。 可以使用内核模式调试器(如 WinDbg 或 KD)调试崩溃转储。 有关详细信息,请参阅调试器附带的文档。

为应用程序崩溃配置自动调试

当应用程序停止响应(例如,访问冲突后),系统会自动调用注册表中指定的调试器进行事后调查调试。如果命令行配置正确,会将进程 ID 和事件句柄传递给调试器。 以下过程介绍如何在注册表中指定调试器。

将调试器设置为事后调查调试器

  1. 转到以下注册表项:

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

  2. 使用指定调试器的命令行的 REG_SZ 字符串添加或编辑 Debugger 值。

    该字符串应包含调试器可执行文件的完全限定路径。 使用“%ld”参数向调试器命令行指示进程 ID 和事件句柄。 不同的调试器可能具有自己的参数语法来指示这些值。 调用调试器时,会将第一个“%ld”替换为进程 ID,并将第二个“%ld”替换为事件句柄。

    以下文本是如何将 WinDbg 设置为调试器的示例。

    "C:\debuggers\windbg.exe" -p %ld -e %ld -g
    
  3. 如果希望在没有用户交互的情况下调用调试器,请使用 REG_SZ 字符串添加或编辑 Auto 值,该字符串指定系统是否应在调用调试器之前向用户显示对话框。 字符串“1”会禁用对话框;字符串“0”会启用对话框。

从自动调试中排除应用程序

以下过程介绍如何在将 AeDebug 项下的 Auto 值设置为 1 之后从自动调试中排除应用程序。

从自动调试中排除应用程序

  1. 转到以下注册表项:

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

  2. 将 REG_DWORD 值添加到 AutoExclusionList 子项,其中名称是可执行文件的名称,值为 1。 默认情况下,会从自动调试中排除桌面窗口管理器 (Dwm.exe),因为如果 Dwm.exe 停止响应,可能会发生系统死锁(用户无法看到调试器显示的界面,因为 Dwm.exe 未响应,并且 Dwm.exe 无法终止,因为它由调试器保留)。

    Windows Server 2003 和 Windows XP:AutoExclusionList 子项不可用;因此,无法从自动调试中排除任何应用程序(包括 Dwm.exe)。

默认的 AeDebug 注册表项可以表示如下:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows NT
            CurrentVersion
               AeDebug
                  Auto = 1
                  AutoExclusionList
                     DWM.exe = 1

使用 WinDbg 启用事后调查调试