【问题标题】:Should I use windbg_x86 for debugging 32bit applications in 64bit windows?我应该使用 windbg_x86 在 64 位窗口中调试 32 位应用程序吗?
【发布时间】:2012-08-11 14:43:30
【问题描述】:

我使用带有英特尔 CPU 的 Windows 7 x64。哪个 windbg 工作正常,我应该使用它来调试 x86 应用程序吗? 还有另一个类似的问题,我安装 windows XP x86 作为 vmware guest 进行内核调试。我的主机是 x64 windows 7。我应该使用哪个 windbg?,windbg x86 或 x64 用于内核调试?

【问题讨论】:

    标签: debugging kernel windbg x86-64 remote-debugging


    【解决方案1】:

    我不想说 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 位调试工具。

    【讨论】:

      【解决方案2】:

      通常最好将调试器与正在调试的应用程序的体系结构相匹配(有时甚至需要)。对于调试 32 位应用程序,即使在 64 位 Windows 操作系统上,我也建议使用 x86 版本的 WinDbg。仅当我想调试 32 位应用程序的 WOW64 部分的一部分时,我才会使用 x64 版本的 WinDbg,这不应该经常发生。

      【讨论】:

      • 此答案中处理用户模式的部分是正确的,x86 版本用于调试 x86 应用程序,x64 用于调试 x64 应用程序。但是,当涉及到内核调试时,目标上的版本根本不重要。您可以使用任一版本 (x86/x64) 来调试任一目标类型 (x86/x64)。内核内存转储也是如此。
      • @snoone 谢谢,不知道。删除了答案的那部分。
      猜你喜欢
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      相关资源
      最近更新 更多