我使用带有英特尔 CPU 的 Windows 7 x64。哪个 windbg 工作正常,我应该使用它来调试 x86 应用程序吗?和另一个类似的问题,我安装 windows XP x86 作为 vmware guest 进行内核调试。我的主机是 x64 windows 7。我应该使用哪个 windbg?windbg x86 或 x64 用于内核调试?
2 回答
我不想说 RTFM,但在这种情况下,这就是答案所在。这是 WinDbg 帮助的摘录:
运行 32 位版本 Windows 的主机 如果您的主机运行 32 位版本的 Windows,请使用 32 位调试工具。(这种情况适用于基于 x86 和基于 x64 的目标。)
运行 64 位版本 Windows 的基于 x64 的主机 如果您的主机使用基于 x64 的处理器并运行 64 位版本的 Windows,则适用以下规则:
如果您正在分析转储文件,您可以使用 32 位调试工具或 64 位调试工具。(转储文件是用户模式转储文件还是内核模式转储文件并不重要,转储文件是在基于 x86 还是基于 x64 的平台上制作的也不重要。)
如果您正在执行实时内核模式调试,则可以使用 32 位调试工具或 x64 调试工具。(这种情况适用于基于 x86 和基于 x64 的目标。)
如果您正在调试与调试器在同一台计算机上运行的实时用户模式代码,请使用 64 位工具来调试在 WOW64 上运行的 64 位代码和 32 位代码。要将调试器设置为 32 位或 64 位模式,请使用 .effmach 命令。
如果您正在调试在单独的目标计算机上运行的实时 32 位用户模式代码,请使用 32 位调试工具。
通常最好将调试器与被调试的应用程序的体系结构相匹配(有时甚至是必需的)。对于调试 32 位应用程序,即使在 64 位 Windows 操作系统上,我也建议使用 x86 版本的 WinDbg。只有当我想调试 32 位应用程序的 WOW64 部分的一部分时,我才会使用 x64 版本的 WinDbg,这不应该经常发生。