Don*_*mmy 6 c# linux remote-debugging visual-studio .net-core
我正在 Linux (Ubuntu) 上运行 .Net Core 微服务,并尝试通过 SSH 使用 Visual Studio 进行远程调试。但该服务是在用户下运行的svcuser
,我的用户是mainuser
。主用户与服务用户位于同一组。
在 Visual Studio 中,我可以看到服务正在运行的进程,但是当我尝试附加时,我得到:
发生一个或多个错误。无法附加到进程。.Net 调试器没有足够的权限来调试进程。要调试此进程,vsdbg 必须以 root 权限运行。
我检查了 MS 文档,但对于 Linux,他们拥有的只是:https: //learn.microsoft.com/en-us/visualstudio/debugger/remote-debugging-dotnet-core-linux-with-ssh ?view=vs- 2019没有关于使用不同用户运行服务的信息
他们关于解决此类问题的唯一信息仅适用于 Windows: https: //learn.microsoft.com/en-us/visualstudio/debugger/error-the-microsoft-visual-studio-remote-debugging-monitor-在远程计算机上作为不同用户运行?view=vs-2019
Sha*_*son 10
如果您有sudo
权限,那么这相对容易,并且可以保证那些具有sudo
权限的用户的安全。避免需要重新配置用户/环境,并允许您调试计算机上的任何进程,无论它以哪个用户帐户运行。
如果您使用 Visual Studio 进行初步调试,您会发现~/.vs-debugger
在您尝试使用的用户帐户的主目录中创建了一个文件夹。此命令将帮助您找到vsdbg
已安装的二进制文件。您可以手动安装 VsDbg,但我发现利用自动化过程更容易。如果您使用 VSCode,这将成为一个手动过程,并为读者留下练习,但我仍然会使用 VS2019 IDE 来准备目标,只是为了保持工具之间的一致性。
find ~ | grep vsdbg
Run Code Online (Sandbox Code Playgroud)
对于我的安装,二进制文件位于~/.vs-debugger/vs2019/vsdbg
,并且该路径很可能会随着时间的推移而改变。
首先,将二进制文件重命名为方便的名称:
mv ~/.vs-debugger/vs2019/vsdbg ~/.vs-debugger/vs2019/vsdbg-bin
Run Code Online (Sandbox Code Playgroud)
其次,创建一个脚本来替换二进制文件:
touch ~/.vs-debugger/vs2019/vsdbg
chmod 770 ~/.vs-debugger/vs2019/vsdbg
nano ~/.vs-debugger/vs2019/vsdbg
Run Code Online (Sandbox Code Playgroud)
脚本内容可能看起来像这样,请注意 的完整路径vsdbg-bin
,使用$@
确保传递到脚本的所有命令行参数都转发到 VsDbg。
#!/bin/bash
sudo ~/.vs-debugger/vs2019/vsdbg-bin $@
Run Code Online (Sandbox Code Playgroud)
现在从 Visual Studio 重试调试会话,如果操作正确,您应该能够使用 SSH->VsDbg 连接到目标计算机上的任何远程进程。“在我的机器上工作。” ;) 这已通过VS2019 16.8.4
、.NET 5.0
和调试由 systemd 在 Azure 中的服务用户帐户下启动的VsDbg 16.9.20122.2
ASP.NET Core 应用程序进行了确认。Debian 5.4.8 (x64)
“甜的。”
哈!
归档时间: |
|
查看次数: |
4042 次 |
最近记录: |