有关使用 WDEB386 的提示

文章翻译 文章翻译
文章编号: 72379 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

WDEB386 调试器提供 Windows 软件开发工具包 (SDK) 中具有许多非常重要的功能 ; 但是,它还具有许多缺点。本文介绍的一些事情 WDEB386 可以和不能执行操作并提供了一些使用诀窍。

更多信息

使用 WDEB386 的原因

最初是作为 Microsoft 内部工具开发和调试增强的模式图层的 Windows 而编写 WDEB386 调试器。按如下方式将保留高级的功能所需调试多任务受保护的模式的系统的一个数字。一次此调试环境的低级性质可以是不实用和令人困惑,在许多情况下。但是,有很多情况下,此调试器特别有用或诊断问题如下所示甚至完全必要:

  • 通过将不会跟踪 CVW 的低级代码跟踪
  • 查看虚拟/线性/物理内存
  • 查看高级 386 处理器数据如 GDT,LDT、 IDT,和所有在 PMODE 注册
  • 跟踪硬件中断处理程序
  • 跟踪终止和驻留的 (TSR) 程序或 MS-DOS 设备驱动程序
  • 显示虚拟机 (vm) 的状态
  • 监视所有中断和增强模式中的异常
  • 开发和调试增强模式的虚拟设备 (vxd)
这不是一个详尽的列表 ; 但是,它应提供阐释一些位置 WDEB386 调试器可能通常会使用该情况。

中断到调试器启动时

在"Microsoft Windows 软件开发工具包工具"手册的第 9 章中没有提到过的一个命令行选项是/B 的选项。WDEB386 命令行上指定/B 指示暂停执行在 Windows 启动调试器。此选项不能保证调试器将暂停运行,第一个指令的执行。事实上,调试器不会中断执行直到后 Windows 已加载 vxd,到初始化。

常规中断到调试器

当运行时 WDEB386 时,CTRL + ALT + SYS RQ 该键组合可以暂停当前指令流的执行。这将不会停止执行的键盘中断的精确位置,执行将暂停虚拟机管理器 (VMM) 中的位置。被中断的虚拟机的寄存器内容可以检查使用.VM 命令 (如下所示)。

或者,可以设置断点,BP 命令或中断说明汇集到代码中直接使用。可以使用一个 INT 1 或 INT 3 指令。不同之处是一个 INT 1 将产生一个"意外的跟踪中断"的邮件,并停止指令之后 INT 1 上。此消息并不表示错误条件,并可被忽略。一个 INT 3 将直接在该 INT 上断开,并不会产生该消息。一旦命中断点指令,则可以将其删除永久使用"Z"命令。此命令将 INT 机器语言替换 NOPs (无操作)。

此外,是否有必要的硬件屏蔽中断 (NMI) 可用于中断至调试器。这通常意味着具有连接到开发计算机的插槽中安装一个调试卡一个外部的"STOP"按钮。某些计算机可能具有连接到计算机总线上 NMI 行的前面板按钮的功能。在任何情况下使用 NMI 具有能够分解为具有"挂起"被禁用的中断与一台计算机的优势。

为开发虚拟设备驱动程序 (vxd) 的程序员 Debug_Out 宏是可用于将发送到调试的 ASCII 字符串终端和执行将中断到调试器的 INT 1 组合在一起。

在标准模式下使用 WDEB386

主要用于增强的模式调试提供了 WDEB386 调试程序 ; 但是,还可用在标准模式下 386 处理器上。一般情况下,WDEB386 调试器在标准模式下的操作中增强的模式相同只是许多功能都不可用特别是在 Windows 3.0。

例如对于在"/ b"在启动时中断选项才可用在增强的模式下,Windows 3.0 上。它是在标准模式下,Windows 3.1 上可用。许多"点"命令 (使用句点作为前缀命令) 提供了用于增强模式,并在标准模式中不可用。

确定处理器的状态

一旦调试器指定控件,使用将提示字符将提供处理器的保护的模式状态。下面的列表显示了哪些提示字符可能会显示和 $ 每个含义:
    Character  Meaning
    ---------  -------

       >       The processor is in real mode
       #       The processor is in protected mode
       -       The processor is in virtual 8086 mode
				
处理器处于该模式将是一个很好显示正在执行什么代码。例如在提示是一个"-"(连字符) 当前指令流是某处 MS-DOS,BIOS,或 TSR 或 ms-dos 的计算机上运行安装程序的设备驱动程序中。这是因为 Windows 的增强的模式图层必须切换到 V86 模式来运行 MS-DOS 或 BIOS 功能的处理器。此外,如果提示是一个"#"(数字符号),保护的模式--这可能是一个基于 Windows 的应用程序、 DLL,或甚至增强的模式图层 — 运行代码。

其中一个最重要的数据的"了解什么运行"时可以在增强模式下使用在 Windows 下的 WDEB386 WIN386.EXE 的一些安全意识。本模块组成,VMM (虚拟机管理器) 和所有 vxd (虚拟设备)。这些组件通常统称为"增强的模式层""震铃零的代码"或只是"WIN386。在 Windows 3.0 和 3.1 和工作组,3.0、 3.1 和 3.11,版本的 Windows 下如果调试器提示是一个"#",时间寄存器的值是 0028h,则意味着 WIN386 中停止该计算机。

停止在 WIN386 可能也可能不是您所希望。例如对于 WDEB386 能够在 WIN386 停止使 VxD 开发人员能够通过有问题的 VxD 单步。不过,应用程序或设备驱动程序程序员使用 WDEB386 由于其"受保护模式意识"可能不感兴趣 WIN386 正在执行的操作。在任何情况下识别与当前的执行流相关联的系统组件是有效地使用 WDEB386 的一个重要步骤。

使用点命令

可能是有关使用 WDEB386 最有趣 (和令人困惑) 部分涉及的是前面有一个句点的命令在"点"命令。 混乱的原因之一是除非安装了 WIN386.EXE 的调试版本,大部分点命令不可用。例如 Windows 正在增强模式下运行时的显示以下消息
不加载,Win386 不调试版本,或无响应
它很可能意味着 WIN386.EXE 的零售版本已安装。有关安装 WIN386,查询词的调试版本的详细信息:
prod(winddk) 和 wdeb386
此外,如果 Windows 是在标准模式下时使用 WDEB386,始终会显示此消息。

圆点转储命令

从概念上讲,则圆点的命令将"外部"的命令或操作数据结构和特定于 Windows 环境的操作的命令。例如对于"D"(转储) 命令显示的内存位置,如应从一个调试器,但是".DG"命令显示得一样 HEAPWALK 应用程序中的 Windows 全局堆信息。

大部分.Dx 命令不需要 WIN386.EXE 的调试版本,也是在标准模式下可用。本文中描述的命令的其余部分要求 WIN386.EXE 的两个使用调试版本,并增强模式操作。正确,安装的所有内容后在"?"help 命令应提供一个联机的快速参考的圆点命令。

应进行的一个重要区别是"K"与".DS"命令之间的时差。"K"命令将引导 Windows 堆栈,只要在基于 Windows 的应用程序或动态链接库 (DLL) 代码中停止调试器。但是,如果调试器跟踪通过 WIN386 代码,"K"命令将不会产生任何有用的输出。由于这个原因已显示 WIN386 堆栈提供".DS"命令。这是另一个演示的"了解运行哪些"重要性本文中前面已提到。

圆点 VM 命令

若要调试增强的模式图层的 Windows 最初设计 WDEB386 ; 因此,可能有 WIN386 的中间部分,已停止调试器的情况。例如对于如果使用 CTRL + ALT + SYS RQ 暂停执行,机器将不会停止立即在指令正在运行的但而是在 WIN386 代码中的断点。因此,常规的寄存器不正常情况下包含的任何尝试调试一个驱动程序或应用程序开发人员使用的任何内容。

但是,可以通过使用.Vx 命令显示当前虚拟机的操作的状态。例如对于".VM"将显示状态标志,注册内容、 当前的指令和当前的 VM 的堆栈的一部分。键入".VL"将生成系统中的所有虚拟机的列表。这些命令可用于获取概述了的应用程序的 DLL、 MS-DOS 或 BIOS 的执行状态,相对于 WIN386 的状态。

圆点内存命令

.Mx 命令显示的内存状态的高级的信息。 很多的功能打印内部 WIN386 信息更易读的格式。立即有用的两个命令都是".ML"和".MP"。这些命令将从线性地址,为物理,反之亦然。

圆点跟踪命令

为保持中断跟踪信息提供了".T"和".S"命令。跟踪项描述 VM 块地址和中断的指令地址发生了什么中断。这些命令可以跟踪不产生直接的症状的问题 (错误) 非常有用。

圆点设备命令

WIN386 和 WDEB386 提供了一个单独的 VxD 显示自己的操作状态有关的信息的能力。一般情况下,该用户可以请求这通过在在"名称"所在的 VxD 名称的 WDEB386 提示符下键入 .name 调试 VxD 中的信息。 例如对于键入 .VDMAD 产生虚拟 DMA 设备的状态信息。

发出点设备命令将导致将一个"Debug_Query"消息发送到 VxD VMM。VxD 不需要执行任何操作以响应这一消息,事实上很多 vxd 不产生任何调试输出。一般情况下,vxd 产生这种方式输出未记录,并作为一种调试问题的 VxD 仅提供。VxD 开发人员可能希望利用这种机制,以显示重要的数据结构,用于定义虚拟设备的状态。

圆点命令摘要

在 Microsoft Windows 软件开发工具包工具手册的节 9.6 (页 9-48) 中总结了点命令。一个联机的快速参考屏幕是可用的该"?"命令。

注意: A 数点命令 SDK 工具手册中不记录。例如对于描述了点设备命令的格式,但实际输出所产生的特定的虚拟设备没有给出。有许多的此问题的原因:

  • 通常由圆点命令产生的输出不被生成 WDEB386 调试器但而是通过 WIN386 的组件。这些组件是被修订和调试器,比多动态更新,因此生成的这些组件的信息很可能会改变。
  • 将输出通常是关于本身,VxD 非常具体的信息,并不正常情况下会在典型的调试情况下非常有用。

属性

文章编号: 72379 - 最后修改: 2004年7月22日 - 修订: 1.1
这篇文章中的信息适用于:
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.0
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.1
关键字:?
kbmt KB72379 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 72379
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com