【问题标题】:How do you remote-debug a 32-bit native app running on Win7/64 from VS 2008, also running on Win7/64?你如何从 VS 2008 远程调试在 Win7/64 上运行的 32 位本机应用程序,也运行在 Win7/64 上?
【发布时间】:2011-05-31 15:44:23
【问题描述】:

我的工作站是 Windows 7 64 位。我正在尝试远程调试在 Windows 7 64 位 VM 上运行的 x86(32 位)应用程序。我在 VM 上安装了 rdbgsetup_x64.exe,它将 32 位和 64 位版本的 msvsmon.exe 安装到 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger。

如果我在 VM 上运行 64 位版本的 msvsmon.exe,我可以从我的工作站附加到 32 位应用程序,但不会加载任何符号,也不会遇到断点。

如果我在 VM 上运行 64 位版本的 msvsmon.exe 并尝试远程启动 32 位应用程序(通过 Debug->Start New Instance),它会失败,并提示“无法启动程序。 64 位版本的 Visual Studio 远程调试监视器 (MSVSMON.EXE) 无法调试 32 位进程或 32 位转储。请改用 32 位版本。"

但是,如果我在 VM 上运行 32 位版本的 msvsmon.exe,当我尝试从我的工作站附加到 VM 上运行的任何进程时,我会收到以下错误:“无法附加到进程。一个发生的错误通常表明安装损坏(代码 0x80004002)。如果问题仍然存在,请通过控制面板中的“添加或删除程序”修复 Visual Studio 安装。”如果我尝试从我的工作站远程启动 32 位应用程序(使用 Debug->Start New Instance),我会遇到同样的错误。

我的问题是如何从运行 Win7/64 的工作站远程调试在 Win7/64 上运行的 32 位应用程序?

谢谢!

【问题讨论】:

  • 您使用的是哪个虚拟机软件?如果它是 VMware,它带有一个 Visual Studio 插件(VMware 安装期间的选项),它在某种程度上自动化了所有这些。我说“有点”,因为开始工作仍然很棘手。 (防火墙和虚拟机网络的东西妨碍了,当事情不工作时,VS 远程调试器不是很有帮助,所以你必须让所有的星星完美对齐。:( 但我已经用它来调试这两个 32位和 64 位进程在 64 位 VM 中。)
  • 你为什么使用虚拟机?只需将 EXE 项目上的 Platform Target 设置为 x86,无需 VM。
  • @Leo:我使用的是 VMWare Workstation 7.1。我在 VM 上附加和调试 64 位应用程序没有问题。当我尝试在同一个 VM 上调试 32 位应用程序时,我遇到了麻烦。我在某处读到我需要运行 32 位版本的 msvsmon 才能完成这项工作,但是当我这样做时,我得到了上面引用的错误(“...这通常表示安装损坏...”)。
  • @Hans:我使用虚拟机是因为我的产品以开发形式在我的工作站上安装了很多我不想要的东西——驱动程序、外壳扩展、服务、钩子注入等。虚拟机是必需品在我们的商店。

标签: visual-studio-2008 debugging 32bit-64bit remote-debugging


【解决方案1】:

32 位 msvsmon 应该可以工作。如果不是,则可能是开发人员机器和远程测试机器上的某些 dll 版本不同。尝试将两者都更新到最新的服务包。 here 描述了一个类似的问题

此外,如果您的 Visual Studio 不支持此方案,您始终可以使用 WinDbg(建议问题标题未明确表示“使用 Visual Studio”)。它支持各种远程调试场景。我经常用 WinDBG 调试类似的场景。网上有很多关于 WinDbg 的教程,但 Advanced Windows Debugging 这本书肯定是最好的。

【讨论】:

  • 嗨,除了Visual Studio安装在32位机器上或主机是32位而远程机器是64位之外,是否可以在相同的场景中进行调试
猜你喜欢
  • 2012-07-04
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
相关资源
最近更新 更多