【发布时间】: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