Visual Studio(VS2008)中的远程调试,Windows窗体应用程序

32

我正在尝试远程调试一个Windows窗体应用程序(C#),但我总是收到以下错误:

无法连接到名为“XXX”的Microsoft Visual Studio 远程调试监视器。目标计算机上的Visual Studio 远程调试器无法连接回此计算机。身份验证失败,请参阅帮助以获取帮助。

我按照MSDN指南进行了配置,但无法使其正常工作。

我的设置:

  • 开发计算机 - XP(x86),连接到域。
  • 测试计算机 - Vista(x86),未连接到域。
  • 这两台机器之间有网络连接。
  • 我在测试计算机中创建了一个本地用户(user1),用户名与我运行Visual Studio的域用户相同 (mydomain\user1),并设置了相同的密码。
  • 测试计算机上,我将"msvsmon.exe"作为应用程序运行(而不是作为服务运行),并使用我创建的用户运行它 (user1):
  • runas /u:user1 msvsmon.exe

请问有人可以帮我吗?

谢谢。


2
点赞仅因你提问清晰并附有好的数据。 - Jay Bazuzi
https://www.wintellect.com/vs-remote-debugging-across-workgroups-or-domains/ - Baget
6个回答

9

我遇到的问题是有2个用户:

mydomain\user1
mytestmachine\user1

根据Gregg Miskely的说法,这不正确。我需要在我的开发计算机上定义一个本地用户,例如:

mydevcomputer\debug
mytestmachine\debug

使用相同的密码,并使用此用户运行VS2008和调试监视器:


7

以下是我的操作过程:

远程计算机:Microsoft Virtual PC,连接到我的企业域“IHS\RDM”,使用管理员帐户jdoe登录。

本地计算机:连接到本地域,使用管理员帐户jdoe登录。

1) 远程计算机:安装rdbgsetup.exe(来自Visual Studio 2005\Disk 2\Remote Debugger\x86)

2) 远程计算机:RUNAS /user MYDOMAIN\jdoe /netonly msvsmon

3) 远程计算机:msvsmon->工具->权限 添加用户"MYDOMAIN\jdoe"(我每次重新启动都要这样做)

4) 本地计算机:运行msvsmon。

5) 本地计算机:msvsmon->工具->权限,添加对象类型:“计算机”,“IHS\RDM”

6) 本地计算机:vs2005->调试->附加到进程。传输方式:默认,限定符:jdoe@RDM

7) 刷新,哇,出现了进程列表!


2
格雷格·米斯克利在他的博客文章中解释了为什么服务帐户需要具有管理员特权(设置时)。其中一点是,用户帐户(在您的情况下是测试机器上的用户)必须具有连接回其他计算机的权限。听起来您遇到了这样的情况,即mydomain\user1帐户没有足够的权限连接到您的开发计算机。
如果这些内容无法帮助您,请查看格雷格的博客文章或给他发送邮件以获得更多帮助。

1

TESTCOMPUTER\user1mydomain\user1的密码相同吗?

您还可以尝试在目标计算机上运行msvsmon.exe,而不是远程调试服务。您可以使用“以...身份运行”将其运行在各种凭据下。一旦您使用msvsmon,exe使事情正常工作,您应该能够安装(或重新启用)远程调试器服务,并使其在这些凭据下运行。

编辑:

您应该能够使用msvsmon.exe中的权限属性页面为目标计算机上的域用户设置适当的调试权限:

http://msdn.microsoft.com/en-us/library/ms164722.aspx


它们有相同的密码,而且我没有将其作为服务运行,我正在运行exe文件。 - Baget
我曾经在MSDN上阅读到,如果两台机器之间没有双向全信任关系,那么就不可能做到这一点。 - configurator

1

所以你是一名开发人员,其中一个用户遇到了异常,你想在不关闭异常窗口的情况下远程调试它,但他们已经以不同的用户帐户登录。事实证明,您可以调试他们的应用程序,但这很棘手。

0)您仍然需要在远程应用程序机器和本地Visual Studio机器上拥有匹配的本地帐户,这意味着需要向用户计算机添加帐户。

1)您需要使用带有/netonly选项的runas。打开命令提示符到msvsmon所在的文件夹,并键入

runas /user:[user] /netonly msvsmon

这会导致 msvsmon 仅在访问网络时(例如当 msvsmon 连接回本地 VS 机器时)使用用户的凭据。如果您在不使用 /netonly 的情况下使用 runas 调用它,msvsmon 将感到不满。

2) 您需要通过远程调试监视器的“工具”->“权限”菜单为本地 Visual Studio 机器添加连接远程应用程序机器的权限。


但是如果我们有不同的域呢?或者一个计算机连接到了域,而另一个没有呢? - Baget

0

所以没有账户我无法回复评论,而且我只能回复自己的评论,但我的注册账户和我发帖时使用的匿名账户是分开的,所以这必须是一个“新答案”。抱歉。

baget - 今天早些时候当我让它工作时,我在远程调试监视器PC和Visual Studio PC上创建了本地账户。 RDM不在域中,VS在域中。 两个本地账户都是管理员,并具有与我的域账户相同的凭据。 我从另一个账户(也是管理员)从升级提示符中调用runas并使用netonly开关。 您可能需要提供您的域名和用户名,但是由于密码应该都匹配,所以我认为这并不重要。

不要忘记调整RDM的权限,以允许运行VS的用户账户连接到具有调试权限的计算机。 它对您添加到列表中的人非常挑剔,因此如果您没有先创建本地账户,则会感到非常沮丧。 如果您正在使用不同的用户账户名称运行RDM,则在尝试连接到远程计算机时必须使用完整的服务器名称; 如果您从同一用户账户中运行RDM和VS,则只需使用计算机名称即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接