发行说明

带有放大镜检查位的 WinDbg 徽标。

本主题提供有关 WinDbg 中的新增功能的信息。 早期版本作为 WinDbg 预览版发布

1.2402.24001.0

新功能

实时 Linux 调试

现在可以实时调试 Linux 进程。 有关详细信息,请参阅以下主题:

Linux 实时远程进程调试

Linux 符号和源

在可预见的将来,WinDbg 客户端仍需要 Windows,因为 WinDbg 不会在 Linux 上运行。

使用时间旅行调试记录执行子集

现在可以指定要记录的模块列表,以便将 TTD 聚焦于所关注的模块上。 这可以大幅降低录制开销。 若要仅检查“配置和记录”对话框中的“记录执行子集”,请指定要记录的模块。 (请参阅 下面的已知问题 )。

为了获得更精细的控制,可以使用新的进程内录制 API 精确录制程序。 请参阅我们的 示例代码文档

压缩注册窗口

新的注册窗口类似于命令的 r 输出。 请注意,尚不支持从新注册窗口进行编辑。

在内存命令中 e 输入值(输入值)的新参数

内存命令中的 e “输入值”现在支持物理地址,就像“显示内存”命令一样 d 。 请注意,这些选项仅在内核模式下受支持:

选项 说明
/p 使用显示的物理内存地址。 Range 指定的范围将取自物理内存而不是虚拟内存。
/p[c] /p 相同,不同之处在于将读取缓存内存。 必须包含 c 前后的括号。
/p[uc] /p 相同,不同之处在于将读取未缓存的内存。 必须包含 uc 前后的括号。
/p[wc] /p 相同,不同之处在于将读取写入组合内存。 必须包含 wc 前后的括号。

有关详细信息,请参阅 e、ea、eb、ed、eD、ef、ep、eq、eu、ew、eza(Enter Values)。

缺陷修复

  • 在 Linux 调试中支持 Rust 名称解开
  • 对 CLR 调试的改进
    • 添加强制混合模式堆栈行走 CLR 帧的功能
      • 添加了ForceMixedModeStackWalker添加到或DbgX.xml已添加config.xml的设置。
      • 添加了 !forceclrmixedmodeunwind 用于一次性调查的命令,或者无法更改配置设置。
  • Linux 上的 CLR 调试的一般改进
  • 修复与LinuxKernel.js和每 cpu 变量相关的许多问题
    • 添加了 !runq LinuxKernel.js命令,以便能够转储每个 CPU 内核计划程序运行队列(类似于 Linux 崩溃实用工具的 runq 命令形式)
    • 修复了LinuxKernel.js中与内核更改相对应的各种命令:在最近的内核中,计时器树使用缓存的 RB 节点而不是原始 RB 节点;在最近的内核中,all_bdevs列表已消失,因此块设备现在会从超级锁中走(blockdev_superblock)
  • 各种 natvis 修复,以更像 Visual Studio 的最新版本一样工作
  • 首选 sourcelink 与旧 sourceinfo
    • 添加了 !lmsourcesinfo <module> 用于显示来自 pdb 的源链接流的命令(以帮助调试源链接的问题)。

已知问题

指定使用 TTD 记录的模块列表时,指定多个模块在此版本中不起作用。

1.2308.2002.0

许多 bug 修复和小改进。

1.2306.12001.0

许多 bug 修复和小改进。

1.2303.30001.0

注意

调试器已从 WinDbg 预览版 重命名为 WinDbg

使用适用于 Windows 的调试工具发布的旧调试器将引用为 WinDbg (经典版)。

ARM64 上的时间旅行调试

WinDbg 不仅在 ARM64 上本机运行,还启用了本机 ARM64 进程的时间旅行调试(TTD)。 现在可以记录本机 ARM64 进程(以及 x86 和 ARM32 进程),并在 x64 计算机上轻松调试它们。 尚不支持 ARM64 设备上的 x64 或启用了 x64 的 (ARM64EC) 进程。

总体 TTD 性能也得到了改进,对于使用常见 SIMD 指令的进程,记录开销大幅降低。 总共优化了 65 个新指令,从 MMX 到 S标准版 4.2、AVX 和 AVX2。

不明确的断点解析

不明确的断点允许调试器在某些断点表达式解析为多个位置的特定情况下设置断点。 有关详细信息,请参阅不明确的断点解析

1.2107.13001.0

WinDbg 预览版搜索现在包含使用正则表达式进行搜索的选项 - 正则表达式。 通过按 Ctrl+F 在要搜索的窗口中启用正则表达式,然后切换搜索框旁标记 .* 的按钮。

受限模式

受限模式是一个可选设置,可以限制 WinDbg 预览版只能启动远程调试会话和转储文件的调试会话类型。 有关详细信息,请参阅 WinDbg - 受限模式

阴影变量支持

在以前的版本中,WinDbg 在尝试评估 (??) 或显示一个变量时引发“不明确符号”错误,该变量在作用域中与其他变量共享其名称。 Windbg 现在将通过追加 @n 到变量名称来消除共享相同名称的变量。 例如:foo@0、foo@1

此更改也会反映在“局部变量”窗口中。 以前,只会显示作用域中最近的变量。

1.2104.13002.0

WinDbg 预览版的便捷工作效率功能是能够在命令窗口中检测模式。 为此,请选择任何文本,以及突出显示该文本的所有其他实例。 由于此突出显示在查看内存模式时非常有用,因此现在,无论数字采用十六进制、十进制或科学表示法的格式如何,它现在也会突出显示其他弧度中的等效数字。 有关编号方案的详细信息,请参阅 n (设置数字基数)。

示例:

选择 0x000001e2fb3f6160时,无论格式如何,所有其他实例都会突出显示。

WinDbg 命令窗口的屏幕截图,其中突出显示了多个数字格式。

此功能也适用于半临时突出显示。 Ctrl + 双击数字以突出显示其所有实例。 可以这样跟踪整个命令历史记录中的多个重要数字(若要清除突出显示,请再次按住 Ctrl + 双击该数字)。 最后,使用 Ctrl + F 搜索数字时,此功能也有效。

源代码扩展访问

源路径命令 .srcpath、.lsrcpath (设置源路径) 已更新为包含新标记 - DebugInfoD。 有关详细信息,请参阅源代码扩展访问

数据模型中 WOW 进程的主机和来宾状态

从 64 位上下文调试 32 位 WOW 进程时,用户现在可以访问数据模型中的主机和来宾状态。

32 位来宾状态示例:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

64 位主机状态示例:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Javascript 调试改进

现在,可以使用 .scriptdebug 命令在控制台中直接调试在 UI 中加载的 Javascript。 有关详细信息,请参阅 JavaScript 调试器脚本 - JavaScript 调试

辅助功能改进

通过 WinDbg 预览版,我们致力于构建对残障工程师包容性的调试器,我们正在不断改进辅助功能。 进行了以下改进。

  • 现在可以通过键盘单击命令窗口链接(Shift+Enter)
  • 改进了主菜单的键盘导航
  • 改进了功能区的键盘导航
  • UI 元素的对比度增加

时间旅行调试器的新“覆盖”数据访问类型

时间旅行调试器(TTD)现在提供“覆盖”数据访问类型。 内存查询(例如 dx @$cursession.TTD.Memory() 现在还有一个显示写入的旧值)的列。

其他修复、改进和更新

  • 添加了用于在内核调试主机和目标为 USB 3.1 控制器时自动检测和应用 USB 3.1 硬件问题的解决方法的功能。
  • 添加了新的 UI 快捷方式:Ctrl + Shift + 单击 DML 链接将它复制到剪贴板

1.0.2007.01003

时间线书签

在 WinDbg 中为重要的时间旅行位置添加书签,而不是手动将位置复制粘贴到记事本。 通过书签可以更轻松地查看跟踪中相对于其他事件的不同位置,并对其进行注释。

可以为书签提供描述性名称。

显示问候语应用中第一个 API 调用的示例名称的新书签对话框的屏幕截图。

通过查看>时间线中提供的时间线窗口访问书签。 将鼠标悬停在书签上时,将显示书签名称。

WinDbg 时间线的屏幕截图,其中包含三个书签和一个显示书签名称的工具提示。

可以选择并按住书签(或右键单击)以移动到该位置,重命名或删除书签。

书签右键单击弹出菜单的屏幕截图,其中包含用于定位、编辑和删除的选项。

“模块”窗口

新窗口显示模块及其相关信息,可通过“视图”功能区获取。 其中显示:

  • 包括路径位置的模块名称
  • 加载模块的大小(以字节为单位)
  • 加载模块的基址位置
  • 文件版本

WinDbg 模块视图窗口的屏幕截图,其中显示了五个列出的模块。

实时调试中可用的线程名称/说明

执行实时用户模式调试时,现在可以使用 SetThreadDescription 设置的线程名称。 线程名称可以使用“~”命令或调试器数据模型。

0:000> ~
   0  Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
   7  Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
   8  Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
   9  Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen

0:000> dx @$curthread
@$curthread                 : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e)  [Switch To]
    Id               : 0x5ffc
    Name             : Hello world!
    Stack
    Registers
    Environment

可移植 PDB 支持

添加了可移植 PDB 支持。 可移植 PDB(程序数据库)格式描述由公共语言基础结构(CLI)语言编译器生成的调试信息的编码,并由调试器和其他工具使用。 有关详细信息,请参阅 可移植 PDB 符号

其他更改和 bug 修复

  • WinDbg 现在支持 AMD64 和 Linux 内核转储调试。
  • 时间旅行记录增强和其他修补程序。

1.0.1912.11001

TTD 时间线 - 我们添加了一个新窗口,用于在跟踪中显示重要事件的可视表示形式:异常、断点、函数调用和内存访问。 时间线将自动打开并显示异常(如果存在)和断点。 有关详细信息,请参阅 WinDbg 预览版 - 时间线

切换到默认窗口部件版式 - 我们正在使用的自定义窗口部件 版式(虽然更漂亮)导致大量用户出现一些缩放和调整大小问题,因此我们暂时已选择将其删除。

文件菜单改进了键盘导航 - 文件菜单现在更易于仅使用键盘进行导航。

其他更改和 bug 修复

  • 当目标正在运行时,堆栈和局部变量窗口现在将被禁用,如果没有目标,则不会显示“未指定错误”。
  • 向“附加”对话框添加了“服务”列,以便轻松查找正在运行的服务。
  • 修复了使用参数启动应用程序时导致体系结构检测不起作用的 bug。
  • 加载专用符号时,反汇编窗口改进了反汇编。
  • jsprovider.dll现在会自动加载,因此我们从脚本功能区中删除了“加载 JSProvider”按钮。

1.0.1908.30002

对 TTD 调用对象的 - 改进现在包括参数名称、类型和值。 在查询函数调用的跟踪时,可以获取完全类型化的参数及其值,以便轻松按参数筛选结果。

支持 Open Enclave - WinDbg 预览版现在可以调试 Open Enclave (OE) 应用程序以了解详细信息,请参阅 Open Enclave 调试

ELF 核心转储 - 作为支持 Open Enclave 的一部分,WinDbg 可以从 Enclave 和 Linux 应用程序打开 ELF 核心转储和二进制文件以及 DWARF 符号(当前不支持 DWARF 5)。 从非 Windows 应用程序打开核心转储时,基本窗口和命令都应正常工作,但大多数扩展和特定于 Windows 的命令将不起作用。 ELF 和 DWARF 文件将从符号服务器下载, 并遵循此处定义的密钥约定。 Enclave 是唯一受支持的方案,但我们愿意提供有关打开其他 Linux 核心转储的反馈。

TTD 文件格式更改 - 我们已对中断向前兼容性的 TTD 跟踪的文件格式进行了重大更新。 以前版本的 WinDbg 预览版将无法打开随 WinDbg 预览版(未来)版本记录的跟踪,但此版本(和将来)版本将能够打开新的和旧的跟踪。

其他更改

  • TTD 现在将使用 64 位引擎进行索引编制,使用适当的调试器引擎位进行重播,以最大程度地减少索引编制时的潜在内存问题,并在重播时出现 SOS 问题。
  • 在没有任何参数的情况下运行“dx”现在将显示根命名空间,以便更轻松地浏览。
  • 现在可以通过设置菜单修改默认符号和源缓存位置。
  • 改进了对录制 AVX-512 的支持(AVX-512 的录制将导致速度超过正常速度)。
  • 我们启用了 脱机许可

1.0.1905.12001

SymSetDiaSession 错误缓解 的改进 - 我们上个月修复了缓解将 DbgHelp 注入进程的应用程序导致的错误,在某些方案中仍然不起作用。 我们对此进行了改进,并将继续监视有关此错误的反馈。

主题色自定义 - 很多方案都需要打开多个 WinDbg 实例,在它们之间来回移动可能会令人困惑,需要一些时间来弄清楚哪一个是“正确的”实例。 我们添加了更改蓝色主题色的功能,以帮助直观地区分会话并简化会话之间的交换。

只需选择 “视图 ”功能区,然后在最后一节中选择 “主题色 ”选项。 从最近的目标启动将来的会话时,主题色将作为目标工作区的一部分保留。

源令牌化改进 - 源窗口现在对标记 Rust 源文件和 C++ 标准版H __try/__except/__finally/__leave有基本的支持。

协同例程改进 - 改进了对协同例程局部变量和某些优化变量的支持。

默认符号和源缓存设置 - 向“调试设置”下的 “设置 ”菜单添加了一个选项,用于更改符号的缓存位置。 注意 - 存在一个已知问题,使此空白将导致源加载失败。 我们将添加验证,以防止在将来的版本中发生这种情况。

-pv 修复 - 修复了可能已阻止 -pv(非侵入性附加)在某些情况下工作的 bug。

1.0.1904.18001

修复了 SymSetDiaSession 错误 - 我们报告了一段时间的错误,导致在某些情况下无法启动 WinDbg 预览版。 在加载 DbgHelp 之前,有几个外部应用程序尝试将 DbgHelp 版本注入进程。 其中一些示例使用缺少功能的 DbgHelp 版本,这在尝试使用这些功能时会导致此错误。 我们添加了对此的修补程序,如果仍有发生此问题的情况,我们将进行跟踪。

字体控件 - 我们添加了用于控制字体和字号的设置。 有两个不同的设置,一个用于文本窗口(单间距窗口,如反汇编、源、命令等)和一个用于工具窗口(局部变量、堆栈等)。 仍有一些区域不受这些选项的影响,我们将在未来进行更新。

突出显示改进 - 命令窗口中文本的持久突出显示现在还会突出显示源窗口和备注窗口中的文本。

源加载改进 - 我们更改了加载源文件的工作原理。 以前在打开源文件时,引擎操作(如运行其他命令是不可能的或不可预知的)。 我们已更改加载的位置,以实现更好的并行度和更可靠的源打开操作取消。

其他更改和 bug 修复:

  • 向源窗口的上下文菜单添加了“转到反汇编”。
  • 在反汇编窗口中添加了检查框以“按照当前说明操作”。
  • 修复了在输出大量文本时导致命令窗口执行缓慢的 bug。
  • 更改了向上页键和下页键以执行与 Visual Studio 类似的操作。
  • 当 ASM 文件在源窗口中打开时,它现在将具有基本注释、字符串和指令突出显示

1.0.1812.12001

此版本包括这些更新。

调试器数据模型 C++ 标头 - 新的 C++ 标头 DbgModel.h 包含在 Windows SDK 中,用于通过 C++ 扩展调试器数据模型。 可以在调试器数据模型 C++ 概述中找到详细信息。 此版本包含一个新的扩展,它向调试器数据模型添加了一些更多的“API 样式”功能,可通过“dx”命令、JavaScript 和新的 DbgModel.h 标头进行访问。 此扩展扩展数据模型,包括有关通过 Debugger.Utility.Code 命名空间执行程序集和代码执行的知识,以及通过 Debugger.Utility.FileSystem 命名空间的本地文件系统。

综合类型扩展 使用此新的 API 扩展,我们在 GitHub 存储库中提供了一个新的示例 - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes。 此 JavaScript 扩展读取基本的 C 头文件,并为标头中定义的结构和联合定义合成类型信息。 然后,可以通过 dx 命令查看内存,就像具有这些类型的类型信息的 PDB 一样。

其他更改和 bug 修复:

  • WinDbg 预览版现在将更智能地处理在单步执行时将源窗口或反汇编窗口引入前台。
  • 重新排列 WinDbg 预览版的窗口标题,在内核调试时在启动时具有更重要的信息。
  • 命令窗口中的交替背景对比度应略显明显。

1.0.1810.2001

此版本包括这些更新。

  • 从“文件”菜单或“主页”功能区访问的新设置对话框。
  • 事件和异常设置对话框。 此菜单更改调试器如何处理事件和异常,相当于“sx”命令或 WinDbg 的事件筛选器对话框。 选择主功能区上的设置,然后在左侧点击“事件和例外”来管理这些事件。
  • 提高了 TTD 索引器的性能。 这增加了对 TTD 跟踪文件编制索引的性能,使索引过程更快(介于 2x-10x 之间),同时使索引文件更小(约 50%) 。 性能改进对于大小超过 4GB 的跟踪,或者在使用具有许多 CPU 核心的计算机(8+)时最为明显。 使用新的索引器可以更可行地调试非常大的跟踪(50GB+)。
  • 用于指定体系结构的新 debugArch 启动标志。 WinDbg 预览版尝试以正确位数启动调试器引擎,以更好地支持调试托管代码。 在某些情况下,它无法确定正确的位性,或者你可能想要重写它决定的内容。 使用 -debugArch x86|amd64 控制调试器引擎的体系结构。

其他更改和 bug 修复:

  • 修复了导致黑条在全屏调试器上出现并打开浮动窗口的 bug。
  • 修复了导致意外清除符号选项的 bug。
  • 从最近的目标启动时,现在保留命令历史记录。
  • 在数据模型窗口中,现在可以编辑值。
  • 未编制索引的 TTD 跟踪现在更清楚地表明它们未编制索引。
  • 改进了局部变量窗口的性能
  • 添加了一个功能区按钮,用于将命令窗口日志保存到文件中。
  • 已添加 。 SelectMany(<投影>)到默认的 LINQ 方法集。

1.0.1807.11002

此版本包括这些更新。

自动保存和加载断点。 这是替换工作区的第一步。 我们通过启用断点的保存和加载来启动该路由。 启动之前从文件菜单中的“最近使用”选项卡调试的内容现在将从该会话加载断点。 计划是扩展此功能,以跨会话保留更多信息。 硬件断点(ba)和其他各种属性(如线程和进程特定上下文以及条件)当前未保存。

次要更改和 bug 修复:

  • 添加了命令行选项 -x、-xe、-xd、-xn 和 -xi,用于控制异常和事件的处理。 这些命令行选项的行为就像其命令计数器部分一样。
  • 备注窗口现在支持粗体、下划线和斜体格式。
  • 修复了某些缩放和滚动问题。
  • 在命令、内存、源或反汇编窗口中选择文本现在将显示选定文本的其他实例上的浅色突出显示。
  • 修复了中断符号加载会导致会话其余部分的符号加载失败的 bug。
  • NatVis 现在会在重启会话时正确重新加载。

1.0.1805.17002

此版本包括这些更新。

新的反汇编窗口 - 反汇编窗口现在包括:

  • 只要可能,向上或向下滚动将持续加载更多反汇编。
  • 数字、代码地址和操作码的语法突出显示。
  • 选择代码符号会将反汇编窗口跳转到该位置。
  • 将鼠标悬停在数字上将显示一个工具提示,用于将该数字转换为其他基数。
  • 表示函数开头的标头。

更快的源窗口 - 源窗口已更新为更快、更高效的资源。

次要更改和 bug 修复:

  • 修复了有关符号缓存的问题
  • 修复了当目标未中断时切换初始中断不可用的情况
  • 如果在命令窗口中点击没有可用选项卡,光标现在将保留在输入字段中
  • 打开 CAB 文件时,WinDbg 预览版现在将自动检测位数

1.0.1804.18003

此版本包括这些更新。

符号状态和取消改进 - 调试器显示 BUSY 加载符号的时间,很难确定它正在执行的操作以及为什么未启用 !sym 干扰。 我们更新了 WinDbg 预览版,以更好地传达加载符号时它正在执行的操作,以帮助排查任何问题。 除了轻松查看所发生的事情之外,我们还进行了一些更改,这些更改应该使取消符号更加可靠,并且“日志”窗口将包含一些在启用 !sym 干扰时通常输出的详细信息。 如果点击“视图 -> 日志”,你将获得完整的干扰符号加载输出,而无需打开它并尝试重新加载符号。

实验笔记窗口 - WinDbg 预览版现在有一个用于记录笔记的窗口。 只需点击视图 -> “备注”将其打开。 如果复制/粘贴到其中,DML 链接将保留,并且仍然像命令窗口一样工作。 当窗口打开时,还可以保存和加载“备注”功能区中的备注文件。

实验性更快的源窗口 - 为了帮助提高 WinDbg 预览版的性能,有一个实验性的新源窗口效率要高得多。 上下文菜单和语法突出显示仍有一些差距,但我们希望让每个人选择在完成之前试用它,以便向我们提供早期反馈。 运行$UseFastSourceWindow以使用它。 如果要返回到旧版,请运行$UseMonacoSourceWindow。 此设置将在会话之间保留,需要关闭并重新开放源代码窗口才能获取新版本。

JSProvider API 版本 1.2 - 对于声明对 API 版本 1.2 的支持的 JavaScript 扩展:

  • 任何具有退出脚本的 .compareTo 方法的对象都将对其具有自定义比较器(比较运算符将在 DX 计算器和其他地方工作:例如:IModelObject::Compare)
  • 使用 .equals 方法退出脚本的任何对象都将对其具有自定义相等运算符(== 和 != 将在 DX 计算器和其他地方工作:例如:IModelObject::IsEqualTo)
  • 输入脚本的本机或数据模型对象将对其具有 .compareTo 和 .equals,允许访问任何自定义比较器或自定义相等实现。

次要更改和 bug 修复:

  • 当短名称存在域问题时,.server 现在将列出完全限定的域名,以便更轻松地使用。
  • Ctrl+G 现在可在源窗口中工作。
  • 向反汇编窗口添加了地址栏。
  • WinDbg 预览版现在将以更预期的方式处理_NT_SYMBOL_PATH。
  • 添加了 -server 命令行选项。
  • 现在可以逐步显示 TTD 数据模型查询,因此,如果中断,仍会看到一些结果。 此功能仍是实验性的,也是可选的。 运行 dx @$cursession.TTD.AsyncQueryEnabled = 1 以启用它。
  • “dps”命令现在具有指向其引用的源文件的链接。

1.1801.19001.0

此版本包括这些更新。

文本突出显示 - 现在可以直接在调试器中突出显示所选文本的所有实例。 若要使用此功能,只需在命令窗口中选择一些文本,然后在命令功能区中选择“突出显示”或按 Ctrl+Alt+H。 使用已突出显示的文本之一将删除突出显示。

如果喜欢使用命令,可以使用“$hl”命令:

$hl ["someValueHere"] - 突出显示提供文本(或取消突出显示(如果已突出显示)

$hl clearAll – 清除所有突出显示的条目

$hl caseSensitive [1|0] - 将突出显示匹配设置为区分大小写或不区分大小写(默认值不区分大小写)

此版本还包括一些小 bug 修复。

1.1712.15003.0

此版本包括这些更新。

TTD 内存查询 - 现在可以查询 TTD 以获取内存访问,这与查询当前调用的方式类似。 这样,你可以查找访问特定内存范围的所有读取、写入和执行。

读取和写入示例: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

唯一执行示例: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

设置更改 - WinDbg 预览版现在会自动保存会话之间的设置,包括符号路径和源路径。

JavaScript 改进

  • JavaScript 中的 64 位数字和数字现在包含一个允许真正的 64 位模式运算的模数方法。
  • JavaScript 中定义的对象现在可以实现自定义可比或同等的概念,该概念将使用标准 C++ 运算符或 LINQ 操作在 dx 中工作。 为了利用这一点,脚本必须在 initializeScript 数组中声明它通过插入记录“new host.apiVersionSupport(1, 2)”来支持主机 API 的新版本。 完成后,可以在任何“dx”或数据模型窗口 LINQ 查询中使用这些函数。 如果方法实现 .compareTo(其他),则它是可比较的(比较运算符在 dx 和 LINQ 中工作)。 如果方法返回负值,例如“此 < 其他值”。 如果方法返回零,则为“this == other”。 如果方法返回正值“this > other”。 如果该方法实现 .equals(其他),则它等效(== 在 dx 和 LINQ 中工作)。 该方法必须返回 true 或 false。

次要更改和 bug 修复:

  • 修复了在启动调试期间堆栈和局部变量窗口无法正常工作的 bug
  • 更新了 LM 的输出,以更准确地报告 ProductVersion 和类似字段
  • 在 TTD 会话期间启用“退步”按钮
  • 添加了对 -lsrcpath 的支持
  • 在向下滚动时,局部变量、监视和模型窗口中的标头现在不会消失
  • 当 Alt+Tabbing 返回 WinDbg 预览版时,命令窗口将正确保留游标位置
  • 添加了用于切换详细模式的 Ctrl+Alt+V 快捷方式
  • 现在,可以通过选择并按住命令窗口(或右键单击)命令窗口选项卡并选择“关闭自动滚动”来禁用命令窗口的自动滚动
  • 现在可以通过启动可执行高级页调试子进程。

1.0.14.0

此版本包括这些更新。

改进了进程服务器体验 - “文件”菜单中的新通知,用于显示已连接到的进程服务器以及与之交互的已添加。 作为这些更改的一部分,在结束调试会话时,进程服务器连接将持续,并且可以在“文件”菜单中断开连接。

“视图”功能区 中的新预设置布局选项 - “视图”功能区中有一个新的“布局”选项。 目前有三种布局:默认值、一个侧重于反汇编和一个最小布局。

“时间旅行调试”功能区 - 调试时间旅行跟踪时会显示增强型时间旅行功能区。

JavaScript 脚本 中的元数据 - JavaScript 扩展现在可以返回属性和其他构造的元数据。 这意味着扩展可以提供帮助字符串、指示值的显示弧度等。 通过存在 Symbol.metadataDescriptor 或对 host.metadata.defineMetadata 的显式调用,在对象上放置元数据描述符来提供元数据。 函数返回、迭代值和其他值上下文可以通过 host.metadata.valueWithMetadata 返回其值的元数据。

JavaScript API 更新 - 对 JavaScript 提供程序中的 API 进行了一些潜在的源级中断性变更(包括本机对象的新投影方法和属性)。 现有扩展不会看到任何潜在的中断性变更,而无需指示它们支持新版本的 JsProvider API。 通过在 initializeScript 返回的数组中放置 host.apiVersionSupport 记录以及支持版本 1.1 的声明来指示对新 API 版本的支持。 也许? .. 值为指示对版本 1.1 的支持。

API 版本 1.1 中的更改包括:

  • host.getModuleSymbol 和 host.getModuleType 如果找不到符号而不是引发异常,则返回 null。
  • 除 .targetLocation 之外,所有本机对象都具有地址属性。 如果该对象没有地址,则访问属性时将引发异常。
  • 所有本机对象都具有新的 .getObjectValue 和 .setObjectValue 方法,以访问对象上的属性,这些属性可能与对象上的名称 JavaScript 位置(例如:“address”)冲突。

其他 JavaScript 更改

  • JavaScript 扩展现在可以通过 Object.defineProperty 和 delete 运算符添加和删除数据模型对象的属性。 添加或注册 JavaScript 类作为父模型或类型签名仍然是操作对象模型的首选方法。
  • JavaScript 扩展现在可以通过新的 host.setModuleSymbol API 修改调试目标模块中的全局变量。
  • 64 位库类型上的所有数学函数(例如:.add、.subtract、.multiply、.divide 等)现在也存在于 JavaScript 数字上。
  • JavaScript 函数和属性现在可以通过自定义封送返回枚举的值。 函数或属性访问器可以返回 host.typeSystem.marshalAs(value, type...),以便唤起此类自定义封送处理。
  • 脚本调试器中的断点命令现在除了行/列位置外,还可以在函数名称上中断。
  • JavaScript 扩展中的类型对象可以通过 .containingModule 属性访问其包含模块。

次要更改和 bug 修复:

  • 修复了条件功能区选项卡的格式设置,使混淆程度较低。
  • 重新工作 DML 以更严格地进行分析以提高性能。
  • CTRL+F 的性能和行为的各种修复。
  • 在尝试使用 TTD 之前,在运行未提升权限时添加了警告。
  • 添加了用于替代自动目标位数检测的选项。
  • 在转储文件中使用时禁用了各种文件菜单和功能区选项(如转储文件中的“Go”)。

已知问题:

  • SOS 在 x86 跟踪上不起作用。

1.0.13.0

此版本添加了时间旅行跟踪。 时间旅行调试,允许你记录进程,然后在以后向前和向后重播它。 时间旅行调试(TTD)通过让你“倒退”调试器会话来帮助你更轻松地调试问题,而无需重现问题,直到找到 bug。 有关详细信息,请参阅时间行程调试 - 概述

1.0.12.0

此版本是 WinDbg 预览版的第一个版本。 有关 WinDbg 预览版中提供的功能的一般信息, 请参阅 WinDbg 的主要功能。

另请参阅

WinDbg – 安装

WinDbg – 命令行启动选项