【问题标题】:How to set up remote debugging on a machine without Visual Studio如何在没有 Visual Studio 的机器上设置远程调试
【发布时间】:2012-07-20 03:39:18
【问题描述】:

有没有办法在没有安装 Visual Studio 的机器上设置远程调试 (Msvscom.exe)?

我想附加到 VM 上运行的服务,以便调试代码中的问题。我以前做过,但两台机器都安装了VS。

Dev box 正在运行 Visual Studio 2010/Windows 7。VM 正在运行没有 Visual Studio 的 Windows 7。

【问题讨论】:

    标签: c# .net visual-studio-2010 remote-debugging


    【解决方案1】:

    我将重新启用此功能,因为任何尝试过此操作的人都知道,每次都非常痛苦,并且随着您可以拥有的主机/远程系统的每一种可能组合,它都会略有变化。

    Visual Studio 远程工具链接:

    1. Visual Studio 2010 remote debugger.(截至 2016 年 10 月 21 日工作)
    2. Visual Studio 2013 remote tools(截至 2016 年 10 月 21 日)
    3. Visual Studio 2015 remote tools x86 - Direct download link
    4. Visual Studio 2015 remote tools x64 - Direct download link
    5. Visual Studio Tools (Thanks Robo Burned)
    6. Visual Studio 2017 Remote Tools x64 - Direct download link (Thanks Isaac Baker)
    7. Visual Studio 2017 Remote Tools x86 - Direct download link (Thanks Isaac Baker)
    8. Visual Studio 2019 Remote Tools - download link

    这是我今天成功的设置:

    主机(开发)机器:
    Windows 7 旗舰版 SP1 x64。运行 Visual Studio 2010、.NET Framework 4。

    远程机器:
    运行 Windows Embedded Standard 32 位的工业/工厂车间 PC。它看起来/感觉完全像 Windows 7。运行 SP1。未安装 Visual Studio。拥有 .NET 框架 4。

    网络:
    两台机器都在同一个子网上。我通过 RDP 访问远程机器并以这种方式运行我的应用程序。

    微软专有的毛囊退化实施:
    记下您的开发机器的用户名和密码。出于某种原因,您必须在远程计算机上创建完全相同的用户名和密码。因为微软。

    我是怎么做到的:
    我从@sJhonny 提供的链接下载了 Visual Studio 2010 远程调试器。我不得不在那篇文章中关闭 Visual Studio 2013 并切换到 2010 年。如果你想用细齿梳子浏览 2010 年的文章以找到下载,链接就在“没有人找到这个”旁边有用的”链接在顶部。如果没有,请点击我上面的链接。

    在远程机器上安装它并运行配置向导。我为向导保留了默认值:

    • “运行 'Visual Studio .....”已勾选
    • 用户名为 LocalSystem,密码为空
    • 只允许本地网络上的计算机....

    在远程系统上运行远程调试器,你会看到

    Msvsmon 启动了一个名为 'username@machinename...' 的新服务器

    在界面中。到目前为止,一切都很好。在远程机器上运行应用程序。在开发机器上,Visual Studio 中的 Ctrl+Alt+P 将打开“附加到进程”(它也在工具菜单下)。我收到一个关于我的开发机器的防火墙配置不正确的弹出窗口,并被询问我是否要允许连接等...显然说是。

    在限定符框中输入“用户名@机器名”组合...按刷新并祈祷一下。更加努力地祈祷,您应该会看到远程机器上运行的进程列表。选择您的进程并附加到它。

    但是我的断点不起作用!?当然它们不起作用...因为在远程计算机上的应用程序所在的同一目录中使用断点太有意义了。如果你足够幸运,你会收到有关断点缓存的警告,并会显示一个带有路径的对话框。

    对话框提到它相对于远程机器是正确的。它在撒谎。它与远程计算机无关,只是它迫使您在那里创建一个与您当前用户同名的全新用户,因为 Microsoft.要让断点工作,请按照开发机器上的路径(可在工具>选项>调试>符号中自定义:在此目录中缓存符号)并将应用程序的 .pdb 文件复制到该目录。您必须在每个新版本中复制它们,除非有自动执行的选项;我还没有检查,因为我还没有停止庆祝我的远程调试成功。

    现在一切都应该正常了。

    我希望这可以帮助某人节省多年来我一直试图让它在不同机器上工作的令人眼花缭乱的愤怒时间。

    【讨论】:

    • VS2015 的链接已损坏
    • “Remote Tools for Visual Studio 2015”现在可在visualstudio.com/downloads上的可折叠区域“Visual Studio 2015 工具”下找到
    • 太棒了!谢谢你,技术上精彩的分步描述(我也喜欢讽刺,因为我有类似的经历...... ;-) 另一个提示:你可以使用this link @ microsoft作为远程工具并选择“其他版本" 如果您需要下载旧版本。所以你只需要一个链接(书签)。
    • 因为 Microsoft ... 上面的链接是有效的,但我只是注意到对于 Visual Studio 2915 Update 3 你需要一个不同的链接:https://www.visualstudio.com/downloads/#remote-tools-for-visual-studio-2015-update-3(向下滚动直到您会在左侧找到 Remote Tools for Visual Studio 2015 Update 3
    • 只是想补充一下我的经验。在我的预选赛领域,我从来没有成功地找到。相反,我输入了计算机 IP 和端口,然后按了刷新。此外,您必须使用与您的开发机器上的 VS 版本完全匹配的远程调试工具。似乎没有向后兼容性。
    【解决方案2】:

    当然有。
    您可以在不安装 Visual Studio 的情况下安装 msvsmon。
    我自己在几台机器上完成了这项工作。
    棘手的部分在于授权 - 在本地计算机上运行 VS 的用户需要在远程计算机上具有特殊权限。
    ms有一些解释细节的文章-http://msdn.microsoft.com/en-us/library/bt727f1t.aspx

    【讨论】:

    • 谢谢 sJhonny,我可以简单地将 MSVCMON.exe 复制到 VM 机器上吗?
    • 不记得真的...我确定我链接到的文章/底部的相关文章之一有答案:)
    【解决方案3】:

    更新: 这是 2017 年的链接,但也不是很明显。

    Visual Studio Remote Tools Links x64 direct link

    Visual Studio Remote Tools Links x86 direct link

    【讨论】:

      【解决方案4】:

      取自: how-to-implement-remote-debugging-in-visual-studio-2005

      让我们考虑一个例子来清楚地理解这种情况。莫莉 Clark 和 Adam Barr 都是 Adventure Works 的员工。冒险 Works 有一个名为 Adventure-works.com 的 Microsoft Windows NT 域。 Adam 在使用 Molly 编写的一些软件时遇到了问题。莫莉 想在亚当的电脑上调试这个软件。莫莉和亚当 请按照以下步骤操作:

      • Adam 的计算机上没有远程调试器。为了设置远程调试器,Molly 决定分享程序 Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger 目录 在她的电脑上。她创建了一个名为 Remote 的文件共享。
      • Adam 运行 \MollyComputerName\Remote\x86\Msvsmon.exe。
      • 远程调试器启动后,Adam 单击工具菜单上的权限以使用权限配置远程调试器 对话框。他授予 Molly 调试权限。
        注意 Adam 还可以通过在远程调试器启动时传递 /allow 选项来配置远程调试器。
      • Molly 启动 Visual Studio 2005。
      • 要打开“附加到进程”对话框,Molly 单击“工具”菜单上的“附加到进程”。
      • Molly 通过在 Qualifier 框中输入 Adventure-works.com\Adam@AdamComputerName 连接到 Adam 的计算机。
      • 在“可用进程”下,Molly 选择她的应用程序正在使用的工作进程,然后单击“附加”。
      • Molly 打开浏览器并向远程应用程序提供 URL。执行在断点所在处停止 应用程序。

      【讨论】:

        【解决方案5】:

        还有另一种我更喜欢的方式(如果您有快速的互联网连接)。

        您不必在远程桌面连接上下载或安装任何东西。

        1. 您可以在通过远程桌面连接进行连接时共享您的磁盘C:

        2. 在远程桌面上转到位置(取决于您的本地位置)

          \\tsclient\C\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Remote Debugger\x64
          
        3. (可选)在桌面上创建文件夹或 msvsmon.exe 的快捷方式

        4. 通过共享磁盘从本地磁盘远程运行它。 (启动可能需要几秒钟,具体取决于您的连接质量)

        选项2:将Remote Debugger\x64或x86文件夹复制到远程位置并使用。

        【讨论】:

          【解决方案6】:

          我能够让它与 asp.net core 2.1 一起使用,与上面答案的唯一区别是您附加到的进程是 dotnet.exe。

          【讨论】:

            猜你喜欢
            • 2021-06-20
            • 1970-01-01
            • 2011-06-22
            • 2019-04-02
            • 2013-11-27
            • 1970-01-01
            • 2020-11-20
            • 2019-12-01
            • 1970-01-01
            相关资源
            最近更新 更多