通过


WinDbg:设置、工作区和保存的调试会话

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

本文介绍如何设置和配置 WinDbg。

WinDbg 使用两种类型的配置文件:

  • 工作区 存储 WinDbg 设置,例如主题、窗口布局、符号路径、源路径和其他配置选项。 工作区文件使用 .xml 扩展名,默认存储在 %LOCALAPPDATA%\DBG\Workspaces。 关闭 WinDbg 时,设置会自动保存到默认工作区文件(%LOCALAPPDATA%\DBG\DbgX.xml)。

  • 已保存的调试会话 存储目标连接信息(例如打开的转储文件或附加的进程)以及每个会话的引擎选项。 调试会话文件使用 .debugtarget 扩展名,默认存储在 %LOCALAPPDATA%\DBG\Targets。 这些文件显示在“开始调试”页上的“最近使用的目标”列表中。

设置

使用 “设置” 菜单设置源和符号路径等项。 还可以选择 WinDbg 的主题。 可用的主题模式包括:

  • 系统 - 遵循 Windows 系统主题设置(默认值)。
  • 浅色 - 使用浅色主题。
  • 深色 - 使用深色主题。

WinDbg 设置菜单中常规选项卡的屏幕截图。

目前有六个 “设置” 对话框:

  • 常规
  • 命令窗口
  • 调试设置
  • 反汇编窗口
  • 事件和异常
  • 源窗口

有关设置路径的详细信息,请参阅 WinDbg(经典版)中Windows 调试器和源代码调试的符号路径。

工作区

工作区将 WinDbg 设置(如主题、窗口布局、符号路径、源路径和其他配置选项)保存到文件中。

保存和加载工作区

通过“文件”菜单可以管理工作区:

  • 保存工作区 - 将当前设置保存到活动工作区文件。
  • 将工作区另存为 - 将当前设置保存到新的工作区文件。
  • 打开工作区 - 从以前保存的工作区文件加载设置。

关闭调试器时也会自动保存设置,除非命令行选项已禁用 -Q 自动保存。

工作区命令行选项

可以使用以下命令行选项来控制工作区行为:

  • -Q - 禁用自动保存设置。 只有当您从“文件”菜单中明确选择保存工作区另存为工作区时,设置更改才会被保存。
  • -WF SettingsFile - 启动时从指定的工作区文件加载设置。

保存的调试会话

保存的调试会话存储目标连接信息以及每个会话引擎选项。 调试会话文件使用 .debugtarget 扩展名,并默认存储在 %LOCALAPPDATA%\DBG\Targets

保存和加载调试会话

可以通过 “文件” 菜单和命令行管理调试会话:

  • 保存调试会话 - 将当前目标连接信息保存到 .debugtarget 文件。 仅当调试目标处于活动状态时,此选项才可用。
  • 最近的目标 - 在 “开始调试 ”页上,从 “最近 的目标”列表中选择以前保存的调试会话以重新加载它。
  • -loadSession - 从命令行加载已保存的调试会话配置文件。

调试会话设置

除了目标连接信息,以下设置存储在已保存的调试会话文件(.debugtarget 文件扩展名)中。

常规设置

注释

此列表和格式不是最终的,可能会更改。

设置 违约 DESCRIPTION
FinalBreak true 如果 true忽略最终断点(-g 命令行选项)。
SourceDebugging true 在源模式或程序集模式之间切换。
DebugChildProcesses false 如果 true,调试目标应用程序启动的子进程(仅限用户模式)(-o 命令行选项)。
Noninvasive false 指定非侵入性连接(-pv 命令行选项)。
NoDebugHeap false 指定不应使用调试堆(-hd 命令行选项)。
Verbose false 启用详细模式时,为某些显示命令(如注册转储)生成更详细的输出(-v 命令行选项)。
Elevate - WinDbg 在内部使用。 请勿修改。
Restartable - WinDbg 在内部使用。 请勿修改。
UseImplicitCommandLine false 使用隐式命令行(-cimp 命令行选项)。 此设置使用隐式命令行而不是要运行的显式进程启动调试器。

有关命令行选项的详细信息,请参阅 WinDbg 命令行选项

符号设置

设置 违约 DESCRIPTION
SymbolOptionsOverride 0 此显式符号选项掩码采用单个十六进制数字的形式。
ShouldOverrideSymbolOptions false 如果设置为 true,则用提供的符号选项掩码替代此表中列出的所有符号选项,如上表中所述。
SymOptExactSymbols false 此选项会导致调试器对所有符号文件执行严格的评估。
SymOptFailCriticalErrors false 此符号选项会导致禁止显示文件访问错误对话框。
SymOptIgnoreCvRec false 此选项会导致符号处理程序在搜索符号时忽略加载的图像标头中的 CV 记录。
SymOptIgnoreNtSympath false 此选项会导致调试器忽略符号路径和可执行映像路径的环境变量设置。
SymOptNoCpp false 此符号选项关闭C++翻译。 设置此符号选项后, __ 在所有符号中替换 ::
SymOptNoUnqualifiedLoads false 此符号选项禁用符号处理程序自动加载模块。 设置此选项后,调试器将尝试匹配符号。 它仅搜索已加载的模块。
SymOptAutoPublics false 此符号选项会导致 DbgHelp 仅搜索 .pdb 文件中的公共符号表作为最后手段。 如果在搜索专用符号数据时发现任何匹配项,则不会搜索公共符号。 此设置可提高符号搜索速度。
SymOptDebug false 此符号选项打开干扰符号加载。 此设置指示调试器显示有关其搜索符号的信息。

有关符号选项的详细信息,请参阅 符号选项

调试会话 XML 文件

调试会话目标连接信息以 XML 格式存储,并使用 .debugtarget 文件扩展名。

以下文件显示了一个调试会话配置文件示例。

<?xml version="1.0" encoding="utf-8"?>
<TargetConfig Name="C:\paint.dmp" LastUsed="2017-08-03T21:34:20.1013837Z">
  <EngineConfig />
  <EngineOptions>
    <Property name="FinalBreak" value="true" />
    <Property name="SourceDebugging" value="true" />
    <Property name="DebugChildProcesses" value="false" />
    <Property name="Noninvasive" value="false" />
    <Property name="NoDebugHeap" value="false" />
    <Property name="Verbose" value="false" />
    <Property name="SymbolOptionsOverride" value="0" />
    <Property name="ShouldOverrideSymbolOptions" value="false" />
    <Property name="SymOptExactSymbols" value="false" />
    <Property name="SymOptFailCriticalErrors" value="false" />
    <Property name="SymOptIgnoreCvRec" value="false" />
    <Property name="SymOptIgnoreNtSympath" value="false" />
    <Property name="SymOptNoCpp" value="false" />
    <Property name="SymOptNoUnqualifiedLoads" value="false" />
    <Property name="SymOptAutoPublics" value="false" />
    <Property name="SymOptDebug" value="false" />
    <Property name="Elevate" value="false" />
    <Property name="Restartable" value="true" />
    <Property name="UseImplicitCommandLine" value="false" />
  </EngineOptions>
  <TargetOptions>
    <Option name="OpenDump">
      <Property name="DumpPath" value="C:\paint.dmp" />
    </Option>
  </TargetOptions>
</TargetConfig>

随着将更多功能添加到 WinDbg,此文件格式将继续发展。