x64上的x86远程调试器服务
是否可以在64位计算机上将x86远程调试器作为服务安装?我需要在会话0进程中将调试器添加到托管代码。该进程运行32位,但安装的调试器服务为64位,并且不会添加到32位进程。
我尝试使用SC命令创建服务,并且能够启动该服务,并验证它是否正在任务管理器进程中运行。但是,当我尝试使用Visual Studio连接到它时,它说未启用远程调试器监视器。当我停止x86服务并启动x64服务时,它能够找到监视器,但仍然出现错误。
当我尝试使用远程调试器时,这是错误:
无法添加到进程。 Visual Studio远程调试监视器(MSVSMON.EXE)的64位版本不能调试32位进程或者32位转储。请改用32位版本。
这是我尝试在本地添加时的错误:
此计算机不支持在另一个终端服务器会话中添加到进程。尝试对计算机进行远程调试,并在进程的会话中运行Microsoft Visual Studio远程调试监视器。
如果我尝试将32位远程调试器作为应用程序运行,则无法正常运行远程调试器在我的会话中运行,而不是在会话0中运行。
解决方案
回答
我没有尝试过,但是无论如何这是一个建议:
尝试手动安装x86远程调试器服务。
sc create "Remote Debugger" binpath= "C:\use\short\filename\in\the\path\x86\msvsmon.exe /service msvsmon90"
两个注意事项:
- 我们需要在msvsmon.exe的路径中使用短文件名,以防止必须用引号引起来(因为需要用引号将整个命令引起来)
- 在" binpath ="之后必须有一个空格(在'='字符之前不能有空格)。编写sc命令的命令行解析器的人都应该受到诅咒。
然后,我们可以使用services.msc控制面板小程序以正确的凭据运行它。
我们可能必须停止甚至删除现有的x64远程调试器服务。
回答
在安装rdbgsetup_x64.exe并通过配置向导后,这可在我的机器上运行:
sc stop msvsmon90 sc config msvsmon90 binPath= "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe /service msvsmon90" sc start msvsmon90
回答
我可以确认我们确实想做的事。我经常用VS2008远程调试器将32位xp精简版连接到x64 win2003服务器。
回答
尝试远程调试在64位IIS中以32位运行的网站时,我们遇到了相同的问题。
我们也可以这样做:
- 停止默认的调试服务(由于安装程序会很聪明并配置为可以运行,因此它将为x64)。
- 导航到"远程调试器"开始菜单文件夹,然后运行x86调试服务。忽略有关32bit / 64bit的警告。
- 打开远程调试器应用程序窗口的"工具"->"选项"窗口,并在"服务器名称"文本框中记下该值。
- 现在,我们可以通过将"服务器名称"值复制到Visual Studio的"添加到进程"对话框的"限定符"文本/组合框中来将Visual Studio添加到它。
与此相关的是,如果我们是从Windows 2008/7 / Vista添加到2003年的计算机上,则还存在一个与Kerberos身份验证有关的低级错误,如下所述: / Remote-debugging-code-on-Windows-2003-from-Vista-or-Windows-72008-R2并通过此处的连接报告给MS(最近关闭为"外部"):https://connect.microsoft.com/ VisualStudio /反馈/ViewFeedback.aspx?FeedbackID=508455