从Visual Studio进行单声道远程调试

Anl*_*nlo 31 mono remote-debugging visual-studio raspberry-pi raspbian

我想从Visual Studio远程调试在Linux上运行的C#控制台应用程序.这是我到目前为止发现的:

http://www.mono-project.com/Debugger

Mono运行时实现了一个调试接口,允许调试器和IDE调试托管代码.这称为软调试器,MonoDevelop,Xamarin Studio和Visual Studio(安装适当的插件时)以及命令行SDB客户端都支持它.

Mono提供了一个API来与调试器通信,并通过Mono.Debugger.Soft.dll程序集创建自己的调试UI.

下面的页面讨论了当前MonoVS调试器实现的一些问题,但它们对我来说都很好.

http://mono-project.com/Visual_Studio_Integration

该页面还链接到MonoVS的入门指南:

http://mono-project.com/GettingStartedWithMonoVS

其中包含MonoTools的下载链接:

http://mono-tools.com/download/

但是,下载链接现在重定向到:

http://xamarin.com/download/

在哪里我可以下载Xamarin Studio Starter Edition.单击"定价"链接,我发现至少需要Visual Studio支持的商业版,每年999美元.好吧,不,谢谢.

这就是我被困住的地方.我的环境的一些细节:

开发环境:

  • Windows 7 64位
  • Visual Studio Pro 2013(如果效果更好,可能会使用2010)

目标环境:

  • 覆盆子皮
  • Raspbian Wheezy
  • 单声道3.2.8
  • 通过SSH运行控制台应用程序

Gut*_*iro 17

我知道这是一个旧线程,但万一有人(像我一样)还没有找到解决方案,今天搜索时,我发现这个Visual Studio 2015扩展程序就像一个魅力:MonoRemoteDebugger for Visual Studio 2015

请参阅MonoRemoteDebugger v1.0.4以修复VS2015 update2上与Xamarin VS扩展的冲突.

我希望它有所帮助.

有一个愉快的调试,并感谢开发人员!:)


Anl*_*nlo 2

我终于找到了一种对Raspberry Pi上运行的 C# 代码进行远程调试的好方法。我已从Mono切换到 .NET Core,现在可以使用 Visual Studio 调试在 Raspberry Pi 上运行的代码,几乎与在我的开发计算机上运行时一样简单。

\n

以下步骤使用 Windows 10 版本 1909、Visual Studio 2019 版本 16.4.3、Raspbian Buster Lite 版本 2020-02-13 和 Raspberry Pi 2 Model B 进行测试。.NET Core 需要 ARMv7 CPU,因此无法运行树莓派 1 和零。

\n
    \n
  1. 转到https://dotnet.microsoft.com/download/dotnet-core并选择 .NET Core 3.1(或更高版本)。单击 Linux ARM32 运行时二进制文件的链接,然后复制下一页上显示的直接链接。(请勿右键单击 ARM32 链接并选择复制链接地址,因为如果下载该链接,您最终会得到一个网页。)

    \n

    .NET Core 下载网站

    \n
  2. \n
  3. 打开与 Raspberry Pi 的 SSH 会话,下载并安装二进制文件:

    \n
    ssh pi@192.168.0.xxx\nwget https://download.visualstudio.microsoft.com/download/pr/c11e9248-404f-4e5b-bd99-175079419d6f/83902a43e06f9fb4e45a4c6a6d5afc0b/dotnet-runtime-3.1.3-linux-arm.tar.gz\nsudo mkdir /opt/dotnet\nsudo tar zxf dotnet-runtime-3.1.3-linux-arm.tar.gz -C /opt/dotnet\nsudo ln -s /opt/dotnet/dotnet /usr/bin/dotnet\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 添加以下行~/.bashrc,注销并再次登录即可激活:

    \n
    export DOTNET_ROOT=/opt/dotnet\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
  7. 检查.NET Core是否已正确安装:

    \n
    dotnet --info\n
    Run Code Online (Sandbox Code Playgroud)\n

    dotnet --info 的输出

    \n
  8. \n
  9. 在 Visual Studio 中创建 *.NET Core 控制台应用程序```lang-none。设置目标框架 = .NET Core 3.1(或您下载到 Raspberry Pi 的版本)。确保项目 \xe2\x86\x92 属性 \xe2\x86\x92 生成 \xe2\x86\x92 输出 \xe2\x86\x92 高级 \xe2\x86\x92 调试信息 = 可移植。

    \n

    高级构建设置

    \n
  10. \n
  11. 在 Visual Studio 中构建项目,并将所有 *.dll、*.pdb、*.deps.json 和 *.runtimeconfig.json 文件从开发计算机复制到 Pi。可以使用PuTTY 的 pscp 命令:

    \n
    cd bin\\Debug\\netcoreapp3.1\npscp -pw <password> *.dll *.pdb *.deps.json *.runtimeconfig.json pi@192.168.0.xxx:/home/pi\n
    Run Code Online (Sandbox Code Playgroud)\n
  12. \n
  13. 打开与 Raspberry Pi 的 SSH 会话并运行程序,或者使用SSH从开发计算机启动它:

    \n
    ssh pi@192.168.0.xxx dotnet /home/pi/MyProgram.dll\n
    Run Code Online (Sandbox Code Playgroud)\n
  14. \n
  15. 通过在 Visual Studio 中选择“调试 \xe2\x86\x92 附加到进程”菜单项来附加到远程进程。选择“连接类型= SSH”,然后在“连接目标”文本框中输入pi@192.168.0.xxx,然后按Enter

    \n

    连接目标

    \n
  16. \n
  17. 输入密码并单击Connect按钮。

    \n

    连接窗口

    \n
  18. \n
  19. 单击Select按钮。

    \n

    附加到过程图像

    \n
  20. \n
  21. 选择托管(.NET Core for Unix)并单击OK按钮。

    \n

    选择代码类型

    \n
  22. \n
  23. 选择dotnet MyProgram.dll进程并单击按钮Attach。第一次连接可能需要几分钟,但后续连接速度要快得多。

    \n
  24. \n
\n

享受设置断点、添加监视、单步调试代码甚至使用“设置下一条语句”的乐趣 - 几乎与在本地计算机上调试时一样快。到目前为止我唯一缺少的是Edit and Continue,但不足以调查是否可以实现。

\n