我想从Visual Studio远程调试在Linux上运行的C#控制台应用程序。这是我到目前为止发现的内容:
http://www.mono-project.com/Debugger
Mono运行时实现了一个调试接口,该接口允许调试器和IDE来调试托管代码。这就是所谓的软调试器,MonoDevelop,Xamarin Studio和Visual Studio(安装了适当的插件时)以及命令行SDB客户端。
Mono提供了与调试器进行通信并创建您的API的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美元。好吧,不,谢谢。
这是我被困住的地方。我的环境的一些细节:
开发环境:
目标环境:
我知道这是一个旧线程,但以防万一(像我这样)尚未找到解决方案,今天在搜索时,我发现此Visual Studio 2015扩展的工作原理很像:MonoRemoteDebugger for Visual Studio 2015
请参见MonoRemoteDebugger v1.0.4以解决与VS2015 update2上的Xamarin VS扩展名的冲突。
希望对您有帮助。
调试愉快,并感谢开发人员! :)
[我发现this guide解释了如何使用Xamarin Studio从Windows在Linux上执行远程调试,该Xamarin Studio现在免费,但iOS和Android开发除外。我已针对在运行Raspbian Jessie Lite的Raspberry Pi Zero W上进行测试时遇到的问题进行了修复,以对其进行了修复(2017-04-10)。
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
字段中填入Linux系统的IP地址和Mono命令行中指定的端口12345。单击Connect
,将开始执行,并在设置的断点处停止。可以设置条件断点,进入/跳出/跳出代码,监视基元和对象等,而且速度也相当快。我宁愿直接从Visual Studio调试,但这似乎是一个可以正常工作的解决方案。
您需要的解决方案是今年MonoDebugger.NET。开发人员“承诺”我们可以部署到任何Mono设备上,并在Visual Studio中对其进行调试(2010年至2015年)。
基于Gutemberg Ribeiro's answer,我设法在运行Raspbian Jessie Lite(2017-04-10)的Raspberry Pi Zero W上使MonoRemoteDebugger与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“ debhttp://plugwash.raspbian.org/mono4jessie-mono4 main” | sudo tee -a /etc/apt/sources.list
sudo apt-get更新
sudo apt-get install mono-complete
wget https://github.com/techl/MonoRemoteDebugger/releases/download/v1.2.0/MonoRemoteDebugger.Server.zip
解压-d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.zip
mono MonoRemoteDebugger.Server / MonoRemoteDebugger.Server.exe
MonoRemoteDebugger -> Debug with Mono (remote)
。老实说,调试功能非常有限。简单的断点和进入/退出/遍历代码似乎还可以。在函数中设置断点,然后单步执行该函数调用不会在断点处停止。
可以查看原始类型,但是无法显示我尝试查看的对象。 “调用堆栈”视图非常有限,“线程”视图为空。无法捕获异常,但会导致MonoRemoteDebuggerServer出现“ [ERROR] FATAL UNHANDLED EXCEPTION”消息。但是,如果您可以忍受这些限制,则设置会比Xamarin Studio route更简单。
有Xamarin Studio / MonoDevelop的插件
这是一个非常老的问题,但是我终于找到了一种很好的方法来对在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进行了测试。.NETCore需要ARMv7 CPU,因此它将无法运行在Raspberry Pi 1和零上。
ssh [email protected] 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 [email protected]:/home/pi
ssh [email protected] dotnet /home/pi/MyProgram.dll
Connection type = SSH
,然后在Connection target
文本框中,键入[email protected]
,然后按Enter。Managed (.NET Core for Unix)
,然后单击确定按钮。dotnet MyProgram.dll
处理,然后单击附加按钮。第一次连接可能需要几分钟,但后续连接要快得多。享受设置断点,添加监视功能,单步执行代码甚至使用“ Set Next Statement”的速度-几乎与在本地计算机上调试时一样快。到目前为止,我唯一缺少的是“编辑并继续”,但不足以调查是否有可能实现。