c# - 从 VS2017 附加到 docker 内正在运行的进程

标签 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 无法找到任何远程连接(在调试 -> 附加到进程中)。

有没有专门针对 VS2017 & 远程调试 & Docker Linux 容器的教程 ?

最佳答案

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

对于远程调试托管进程 C#、VB、F# 等,您可以使用“VS 远程调试工具”,但它们仅适用于 Windows。所以要知道你不能在 Linux 容器上远程调试 C# 应用程序。 希望这可以澄清事情。

关于c# - 从 VS2017 附加到 docker 内正在运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46159045/

相关文章:

c# - UpdatePanel 不更新图像按钮单击事件

c# - 如何强制我的 lambda 表达式提前求值?修复 lambda 表达式的怪异问题?

.net - 强制异常(exception)语言为英语

Jenkins 'execute script' 构建步骤错误 :/bin/docker: Permission denied

postgresql - 为什么不能使用 "service postgres start"在 docker 中启动 postgres?

linux - Docker:压缩文件但排除某些文件夹

c# - Fxcop 自定义规则检查派生类名称以基类名称结尾

c# - 获取本地照片 Windows Phone 8 模拟器

c++ - 找出我的项目在 Visual Studio 中使用的所有 Boost .lib 文件

c# - 如何在自定义目标之后运行构建后事件?