x64 Windows Server 2003 上的远程调试

Posted

技术标签:

【中文标题】x64 Windows Server 2003 上的远程调试【英文标题】:Remote debugging on x64 Windows Server 2003 【发布时间】:2013-04-16 14:11:39 【问题描述】:

我在 32 位 Windows Server 2003 机器上安装了一个 Web 服务。通过在我的机器上共享 x86 调试器 exe,我可以使用 VS 2010 从我的 Windows 7 64 位机器远程调试它。一切正常,直到周末他们决定将服务器机器升级到 64 位。

现在,当我尝试使用 x86 调试器进行远程调试时,它给了我错误:

当我使用 x64 调试器时,它不会抛出错误,但不会加载项目的符号,因此我无论如何都无法调试它。

关于为什么会这样的任何想法?我应该做些什么不同的事情?

【问题讨论】:

doesn't load the symbols for the project 模块窗口甚至不包括项目程序集。它只显示 system32 和 GAC 程序集...我尝试在 32 位和 64 位下运行该进程,但遇到了同样的问题。 当以 32 位运行进程时,我假设您已经解决了您发布的初始问题(对话框之一)。顺便说一句,附加到进程后实际发生了什么?确保您打开了输出窗口并检查您的输出设置 (Tools -> Options -> Debugging -> Output Window) - 它可能表明它在哪里掉下来。我猜想那台机器上的框架版本的符号在符号服务器上不可用。 将运行 32 位 2003 窗口的机器更新为 64 位 2003 窗口也很奇怪? 检查日历上的当前日期 :) 哦,我知道这次更新有多奇怪。甚至不知道他们为什么需要它,但他们做到了,我必须处理它。输出窗口不显示任何内容。 :// 【参考方案1】:

不确定这是否适合您,但您可以选择

设置 VS 以生成 x86 可执行文件(构建选项,平台目标 x86) 或者如果您的 Web 服务在 IIS 中运行,请创建一个作为 x86 进程运行的应用程序池

转到 IIS 管理控制台中的应用程序池,右键单击您的 应用程序池并选择“设置应用程序池默认值...”。在里面 属性对话框,将“启用 32 位应用程序”设置为“真”。

这样你应该能够使用 x86 调试器(因为以前可以使用)。


显然你可以将 IIS 6 设置为在 x86 模式下运行:

%SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1

之后也运行

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i

【讨论】:

我已经构建了面向 x86 的服务,但“启用 32 位应用程序”设置似乎在 IIS7 及更高版本中。 Windows Server 2003 使用 IIS6。不幸的是,没有快乐。【参考方案2】:

请确保您正在执行以下操作

-确保您拥有最新的符号,并且可以在服务器上执行

-运行 64 位版本的 msvsmon.exe

-在 Visual Studio 中的客户端上,调试 - 附加到进程 - 传输(远程)限定符(您的服务器)

-选择进程并点击附加

您必须在服务器和客户端上拥有相同版本的可执行文件和符号

【讨论】:

以上是关于x64 Windows Server 2003 上的远程调试的主要内容,如果未能解决你的问题,请参考以下文章

Windows 服务在从 3.5 迁移的 Windows Server 2008、x64、.NET 4 上引发 System.BadImageFormatException

windows server 2003 64 位能不能支持 SQL 2000? 是需要安装SQL sp4的补丁吗? 顺求 2003 64位系统..

找Windows Server 2003 R2 Enterprise EditionX64下载地址

32 位应用程序无法在 x64 Win2003 上运行,原因是

云服务器一般使用什么系统?Linux还是Windows?

SQL Server 实际使用了多少 RAM? [关闭]