主题是预配置的windbg工作区,其中包含调试信息窗口的有用配置。任何主题都可以保存为基本工作区。Windows调试工具包中的主题作为一组注册表文件(扩展名为.reg)提供。当您积累更多的调试会话时,会自动设置各种默认工作区。这些默认工作区使用基本工作区作为起点。有关默认工作区的详细信息,请参见WinDbg的工作空间---Work Space 。
一、加载主题
在加载主题之前,我们建议您清除所有工作区数据。这可以通过三种方式实现:
- 使用Windbg用户操作接口,在菜单“File”下的“Clear Workspace”的弹出窗体,选择所有,然后点击"OK"
- 删除注册表键HKCUSoftwareMicrosoftWindbgWorkspaces下的内容
- 通过命令行删除 reg delete HKCUSoftwareMicrosoftWindbg.
清除所有工作区数据后,运行其中一个主题。这些文件作为.reg文件存储在Windows安装调试工具的主题目录中。运行主题会将其设置导入注册表,重新定义基本工作区。加载主题后,可以将其更改为更符合您的偏好。
二、自定义主题
在自定义主题之前,必须先加载该主题。加载主题后,在没有命令行参数的情况下启动windbg。这将打开基本工作区。自定义主题有两个常见的焦点区域:设置路径和调整窗口位置。完成任何需要的调整后,退出windbg并从“文件”菜单中选择“保存工作区”来保存工作区。如果要将新设置保存到.reg文件中,请打开regedit并将hkcusoftwaremicrosoftwindbgworkspaces下的注册表项导出到.reg文件中。如果把这个注册表键里面的内容导出为xx.reg文件,则可以把这个文件分享给别人,让别人使用与你相同的配置。在windbg的语境中,这个文件被称为主题(Theme)。
- 相关路径设置
通过设置适当的路径,可以确保windbg可以找到有效调试所需的所有文件。要设置的主要路径有三条:符号路径、源路径和可执行映像路径。 - 调整窗口
在使用主题之前,您应该调整窗口位置,以便windbg正确处理源文件。这样可以确保源窗口知道停靠在哪里。首先在windbg中打开一个源窗口。选项卡使用为源窗口预留的占位符固定此窗口。为了建立正确的关系,在执行此选项卡停靠操作之前,占位符窗口必须是停靠中的最上面的窗口。现在关闭源窗口,但不关闭占位符窗口。由于调试信息窗口“记住”其最后一次停靠操作,因此在执行此过程后,每个源窗口的最后一次停靠操作都与一个占位符窗口相关联。由于这个内存属性,您不应该关闭任何占位符窗口。此外,如果选择更改主题的配置,则在停靠中重新定位的任何窗口都应始终与占位符文件对齐。
三、使用Windows调试工具中提供的主题
本节显示Windows调试工具中提供的四个主题中每个主题的配置截图。这些主题分别是standard.reg、standardvs.reg、srcdismbling.reg和multimon.reg
- Standard.reg
Standard.reg主题可用于大多数调试目的。在这种排列中,下三分之一的windbg窗口由调试器命令窗口获取。上三分之二大致分成两半。左半部分由一个占位符窗口占据,该窗口指示源窗口在选项卡式集合中打开的位置。右半部分又垂直分为两半。上半部分包含一个选项卡式集合,其中包括手表、局部变量、寄存器和反汇编窗口。下半部分包含一个选项卡式集合,其中包含调用、进程和线程窗口。在每个停靠位置中,还包括一个占位符窗口作为其他窗口的参考点。不应关闭占位符窗口,因为关闭它们可能会更改窗口的配置。此排列中的所有窗口都已停靠。下面的屏幕截图显示Standard.reg主题。 - Standardvs.reg
Standardvs.reg主题可以用于大多数调试目的,但在布局上更类似于Visual Studio。在这种排列中,windbg窗口水平分为三部分。上三分之一又垂直分成两半。上三分之一的左半部分包含一个选项卡式集合,其中包括手表、局部变量、寄存器、内存、反汇编和草稿行窗口。上三分之一的右半部分包含一个选项卡式集合,其中包含调用、进程和线程窗口。windbg窗口的下三分之一由调试器命令窗口获取。中间的第三个由一个占位符窗口填充,该窗口指示在选项卡式集合中打开源窗口的位置。在每个停靠位置中,还包括一个占位符窗口作为其他窗口的参考点。不应关闭占位符窗口,因为关闭它们可能会更改窗口的配置。这种布置中的所有窗户都是对接的。以下屏幕截图显示Standardvs.reg主题。 - Srcdisassembly.reg
srcDisassembly.reg主题包括一个反汇编窗口,用于在汇编模式下进行调试。在这种排列中,windbg窗口被垂直地分为两部分,而形成的每一半又被水平地分为三部分。在右半部分,上三个是局部变量和监视窗口的选项卡式集合,中间三个是调试器命令窗口,下三个是进程、线程和调用窗口的选项卡式集合。在左半部分,上三分之二由一个显示源窗口在选项卡式集合中打开位置的占位符窗口获取;下三分之一由反汇编窗口获取。在每个停靠位置中,还包括一个占位符窗口作为其他窗口的参考点。不应关闭占位符窗口,因为关闭它们可能会更改窗口的配置。这种布置中的所有窗户都是对接的。下面的屏幕截图显示srcambolution.reg主题。 - Multimon.reg
multimon.reg主题是为使用多个监视器进行调试而设置的。在此安排中,将创建一个新的停靠,以便在一个监视器上查看windbg窗口,在另一个监视器上查看新的停靠。windbg窗口由一个占位符窗口填充,该窗口指示在选项卡式集合中打开源窗口的位置。新码头分为四个部分。左上角包含一个选项卡式集合,其中包括Watch和Locals窗口。右上角包含一个选项卡式集合,其中包含寄存器、内存、反汇编、草稿页、进程和线程窗口。左下角包含调试器命令窗口。右下角包含Calls窗口。在每个停靠位置中,还包括一个占位符窗口作为其他窗口的参考点。不应关闭占位符窗口,因为关闭它们可能会更改窗口的配置。这种布置中的所有窗户都是对接的。以下屏幕截图显示multimon.reg主题。