从VS2017附加到docker内的运行进程

时间:2017-09-11 15:16:31

标签: c# visual-studio docker containers

是否有一种简单的方法可以调试从Visual Studio远程主机上的Linux容器内运行的进程?

想象一下这样一个场景,我们在一些远程机器上部署了多个服务,在docker容器内运行 - 开发环境。在测试期间,我们检测到其中一个服务的内部状态变得紊乱,需要弄清楚那里发生了什么。我们不希望本地docker-compose up,因为我们可能无法模拟场景。

相反,我们想要附加到容器内的运行进程。

我阅读了几篇关于如何执行此操作的文章,但它们或者是关于Windows容器(https://www.richard-banks.org/2017/02/debug-net-in-windows-container.html)或者只是简单的混淆(例如,我是否需要安装sshd以从VS连接到它?我需要吗?按照此处所述安装vsdbg https://github.com/Microsoft/generator-docker/issues/130?)

我尝试将vsdbg与ssh一起安装到容器中,但Visual Studio无法找到任何远程连接(在Debug - > Attach to Process中)。

是否有专门针对VS2017& amp;远程调试& Docker Linux容器 ?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用gdb和ssh进行调试,如本页所示:https://docs.microsoft.com/en-us/cpp/linux/connect-to-your-remote-linux-computer 但这会将流程视为本机/非托管流程。它基本上是用于调试C ++应用程序。

对于远程调试托管进程C#,VB,F#等,您可以使用“ VS远程调试工具”,但它们仅适用于Windows。因此,众所周知,您不能在Linux容器上远程调试C#应用程序。 希望这能弄清一切。

答案 1 :(得分:0)

要公开这些内容,您必须安装远程调试工具。通常,使用Windows时,每个Visual Studio都有一个不同的版本,但这应该从Visual Studio的2017年及更高版本开始起作用。

https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging-dotnet-core-linux-with-ssh?view=vs-2019