我想从Visual Studio远程调试在Linux上运行的C#控制台应用程序。这是我到目前为止所发现的:
http://www.mono-project.com/Debugger
Mono运行时实现允许的调试接口 用于调试托管代码的调试器和IDE。这叫做Soft 调试器,并受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/
但是,下载链接现在重定向到:
我提供下载Xamarin Studio简化版的地方。单击“定价”链接,我发现至少需要Visual Studio支持的商业版,每年999美元。好吧,不,谢谢。
这就是我被困的地方。我的环境的一些细节:
开发环境:
目标环境:
答案 0 :(得分:17)
我知道这是一个旧帖子,但万一有人(像我一样)还没有找到解决方案,但今天搜索时,我发现这个Visual Studio 2015扩展程序就像一个魅力:{{ 3}}
请参阅MonoRemoteDebugger for Visual Studio 2015以修复VS2015 update2上与Xamarin VS扩展的冲突。
我希望它有所帮助。
快乐的调试并感谢开发人员! :)
答案 1 :(得分:3)
我发现this guide解释了如何在Windows上使用Xamarin Studio在Linux上执行远程调试,除了iOS和Linux之外,它现在是免费的。 Android开发。我在运行Raspbian Jessie Lite(2017-04-10)的Raspberry Pi Zero W上测试它时遇到的问题我已经扩展了它。
MONODEVELOP_SDB_TEST = 1
(我的电脑 - >属性 - >高级系统设置 - >环境变量)。%localappdata%\XamarinStudio-6.0\Logs
中的日志文件以查看失败的内容。PdbDebugException: Unknown custom metadata item kind: 6
)构建的程序集。pdb2mdb MyProgram.exe
sudo apt-get install mono-complete
。mono --debug --debugger-agent=transport=dt_socket,address=0.0.0.0:12345,server=y /path/to/MyProgram.exe
。这将启动程序但停止执行,直到Xamarin Studio调试器已连接。Run -> Run with -> Custom Configuration...
并选择Run Action = Debug - Custom Command Mono Soft Debugger
。点击Debug
。IP
和Port
字段。单击Connect
,将开始执行,在设置的断点处停止。可以设置条件断点,进入/退出/遍历代码,观察基元和对象等,并且它也非常快。我宁愿直接从Visual Studio调试,但这似乎是一个完全可行的解决方案。
答案 2 :(得分:1)
这是一个非常老的问题,但是我终于找到了一种很好的方法来对在Raspberry Pi上运行的C#代码进行远程调试。我已经从Mono切换到.NET Core,现在可以使用Visual Studio调试在Pi上运行的代码,就像在开发机上运行一样简单。
以下步骤已使用Windows 10版本1909,Visual Studio 2019版本16.4.3,Raspbian Buster Lite版本2020-02-13和Raspberry Pi 2模型B进行了测试.NET Core需要ARMv7 CPU,因此它不会在Raspberry Pi 1和Zero上运行。
ssh pi@192.168.0.xxx wget https://download.visualstudio.microsoft.com/download/pr/c11e9248-404f-4e5b-bd99-175079419d6f/83902a43e06f9fb4e45a4c6a6d5afc0b/dotnet-runtime-3.1.3-linux-arm.tar.gz sudo mkdir /opt/dotnet sudo tar zxf dotnet-runtime-3.1.3-linux-arm.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/bin/dotnet
~/.bashrc
,然后注销并再次登录以激活:export DOTNET_ROOT=/opt/dotnet
dotnet --info
.NET Core Console App
。设置Target framework = .NET Core 3.1
(或您下载到Pi的版本)。确保项目→属性→构建→输出→高级→调试信息=可移植。cd bin\Debug\netcoreapp3.1 pscp -pw <password> *.dll *.pdb *.runtimeconfig.json pi@192.168.0.xxx:/home/pi
ssh pi@192.168.0.xxx dotnet /home/pi/MyProgram.dll
Connection type = SSH
,然后在Connection target
文本框中,键入pi@192.168.0.xxx
,然后按Enter。Managed (.NET Core for Unix)
,然后单击确定按钮。dotnet MyProgram.dll
进程,然后单击“附加”按钮。第一次连接可能需要几分钟,但随后的连接会更快。享受设置断点,添加监视功能,单步执行代码甚至使用“设置下一条语句”的速度,几乎与在本地计算机上调试时的速度一样快。到目前为止,我唯一缺少的是“编辑并继续”,但不足以调查是否有可能实现。
答案 3 :(得分:0)
您需要的解决方案将于今年推出MonoDebugger.NET。开发商&#34;承诺&#34;我们可以部署到任何Mono设备,并在Visual Studio中进行调试(2010年至2015年)。
答案 4 :(得分:0)
在Gutemberg Ribeiro's answer的基础上,我设法让MonoRemoteDebugger在运行Raspbian Jessie Lite(2017-04-10)的Raspberry Pi Zero W上使用VS2015。诀窍是安装晚于3.2.8的Mono版本:
sudo apt-get purge mono-complete
sudo apt-get autoremove
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo“deb http://plugwash.raspbian.org/mono4 jessie-mono4 main”| sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install mono-complete
wget https://github.com/techl/MonoRemoteDebugger/releases/download/v1.2.0/MonoRemoteDebugger.Server.zip
unzip -d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.zip
mono MonoRemoteDebugger.Server / MonoRemoteDebugger.Server.exe
MonoRemoteDebugger -> Debug with Mono (remote)
。老实说,调试功能非常有限。简单的断点和进/出代码似乎工作得有点好。在函数中设置断点然后单步执行该函数调用将不会在断点处停止。
可以观看原始类型,但无法显示我尝试观看的对象。 “调用堆栈”视图非常有限,“线程”视图为空。异常没有被捕获,但会导致MonoRemoteDebuggerServer发出“[ERROR]致命不受限制的异常”消息。但是如果你能忍受这些限制,那么设置就比Xamarin Studio route简单。
答案 5 :(得分:0)
Xamarin Studio / MonoDevelop有一个插件