x64 上的 x86 远程调试器服务

Posted

技术标签:

【中文标题】x64 上的 x86 远程调试器服务【英文标题】:x86 Remote Debugger Service on x64 【发布时间】:2010-09-09 18:26:37 【问题描述】:

是否可以在 64 位机器上安装 x86 远程调试器即服务?我需要将调试器附加到会话 0 进程中的托管代码。该进程运行 32 位,但安装的调试器服务是 64 位,不会附加到 32 位进程。

我尝试使用 SC 命令创建服务,并且能够启动服务,并验证它正在任务管理器进程中运行。但是,当我尝试使用 Visual Studio 连接到它时,它说远程调试器监视器未启用。当我停止x86服务,启动x64服务,能找到监视器,但还是报错。

这是我尝试使用远程调试器时的错误: 无法附加到进程。 64 位版本的 Visual Studio 远程调试监视器 (MSVSMON.EXE) 无法调试 32 位进程或 32 位转储。请改用 32 位版本。

这是我尝试在本地附加时的错误: 此计算机不支持附加到不同终端服务器会话中的进程。尝试远程调试机器并在进程的会话中运行 Microsoft Visual Studio 远程调试监视器。

如果我尝试将 32 位远程调试器作为应用程序运行,它将无法工作附加 b/c 远程调试器正在我的会话中而不是在会话 0 中运行。

【问题讨论】:

你能提供更多关于这个问题的细节吗?有问题的 32 位服务是什么?究竟是什么错误 - 你暗示它是位数,但 64 位调试器应该能够加载 32 位托管代码,afaik。 【参考方案1】:

安装 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

【讨论】:

【参考方案2】:

在尝试远程调试在 64 位 IIS 中以 32 位运行的网站时,我们遇到了同样的问题。

您也可以这样做:

停止默认调试服务 (这将是 x64 作为安装程序 会很聪明和配置 要运行的那个)。 导航到远程调试器启动 菜单文件夹并运行 x86 调试 服务。忽略关于的警告 32 位/64 位。 打开工具->选项窗口 远程调试器应用程序窗口和制作 注意 'Server 中的值 名称的文本框。 现在您可以附加您的视觉工作室 通过复制“服务器名称” 值到“限定符”文本/组合中 “附加到进程”对话框中的框 Visual Studio 的。

在相关说明中,如果您从 Windows 2008/7/Vista 连接到 2003 计算机,则 Kerberos 身份验证也存在一个低级错误,通过此处的 Connect 报告给 MS(然后作为“外部”关闭) :https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=508455

【讨论】:

我们在此处向 MS Connect 提交了有关 Kerberos 身份验证问题的新错误:connect.microsoft.com/WindowsServerFeedback/feedback/…。如果其他人遇到这个问题,那么请投票给它 - 我有一个偷偷摸摸的怀疑,Windows 团队会简单地将其退回给 VS 团队。 这对我来说就像一个魅力!谢谢!只需从开始菜单运行 x86 选项。比处理服务要容易得多。 对我有用,但我还有一个额外的步骤——在我从主机框输入限定符后,服务器框上的是/否提示允许入站连接。 当我安装远程调试工具时,它没有包含 x86 调试服务的开始菜单链接。通过检查 x64 快捷方式导航到它的安装目录,您会找到它。【参考方案3】:

我还没有尝试过,但无论如何这里有一个建议:

尝试手动安装 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 远程调试器服务。

【讨论】:

【参考方案4】:

我可以确认您想要做的事情确实有效。我经常用 VS2008 远程调试器将我的 32 位 xp 优化连接到 x64 win2003 服务器。

【讨论】:

【参考方案5】:

1) 安装 x64 版本。这也会安装 x86 调试器,但不会创建快捷方式。

2) 你可以在这里找到 x86 进程调试的可执行文件... C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe

3) 如果需要,请将其固定到任务栏。

【讨论】:

【参考方案6】:

为我工作而无需安装其他软件。我刚刚复制了 VM 上的 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger 文件夹并从 x86 文件夹启动了 msvsmon.exe。我的客人和主人都是x64

【讨论】:

“远程”调试器暗示它在服务器上。然后,您需要确保它已安装在服务器上。是的,它还随 Visual Studio 一起安装在您的工作站上以进行本地调试。您刚刚复制了一个可执行文件,例如 Mac 之类的!【参考方案7】:

有时会出现这个错误,我只是关闭了visual studio再打开,一切正常!

vs 的非常奇怪的行为

【讨论】:

【参考方案8】:

我今天遇到了这个问题(64 位操作系统和 VS 2019)。我将配置更改为对项目使用 x64,将 IISExpress 更改为使用 64 位,将平台目标更改为 x64。它仍然使用 32 位调试器并抱怨。最后,当我启用脚本调试时,它开始使用 64 位调试器。所以我想说所有的组合都成功了。

【讨论】:

请问如何使用脚本调试?

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

VS 远程调试阿里云上的web站点,Remote Debugger

vs 远程调试

vs远程调试iis

VS 本地调试 x64 平台 “Visual Studio Remote Debugging Monitor 已停止工作” 问题解决

WinDbg远程调试

VS 远程调试问题