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下载地址