Visual Studio C#远程调试关闭windows服务

Posted

技术标签:

【中文标题】Visual Studio C#远程调试关闭windows服务【英文标题】:Visual studio c# remote debugging closes windows service 【发布时间】:2014-10-25 19:15:45 【问题描述】:

我偶尔会从我的计算机调试我的 Windows 服务,而实际上 Windows 服务位于不同的远程服务器中。 我使用 Visual Studio 远程调试器执行此操作,然后通过

连接到服务器将我的源附加到服务

工具 -> 附加到进程 -> 限定符 = 服务器 ip

问题是每当我由于互联网错误等原因失去与服务器的连接时,windows 服务器就会在我的服务器中停止并关闭,我必须重新启动它。

也许我没有提供足够的信息,所以请询问而不是投反对票。

TIA。

【问题讨论】:

我建议在 Windows 服务中放置一个try/catch,看看它是否因某种原因而崩溃。如果是这样,并且连接是原因,它可能会给你更多的继续。 当我开发服务时,我通常以两种形式构建它们:一种是服务,另一种是控制台应用程序,因此它们的区别仅在于运行它们所需的“包装”代码各自的上下文。我使用控制台版本来开发/调试我的代码,并在准备好部署时简单地构建服务。我从来不需要附加/调试服务进程。 感谢您的建议,但它不是问题.. 尝试并抓住我认为它是多余的,因为我确定它来自我的本地计算机而不是服务器的连接错误.. 关于控制台,我也在本地运行服务来跟踪它,远程仅适用于特定情况.. 所以你无法模拟代码在服务中而不是在控制台应用程序中运行时会发生什么?我的建议也是只创建一个控制台应用程序并对其进行调试,而不是服务进程本身。 【参考方案1】:

检查远程服务器上的事件查看器。如果服务崩溃,应用程序日志中应该有一个条目。如果您需要更多详细信息,可以让 Windows 错误报告器在服务崩溃时捕获故障转储。详情在这里: http://msdn.microsoft.com/en-us/library/windows/desktop/bb787181(v=vs.85).aspx

GitHub 建议将此作为其 Windows 客户端的调试过程。您可以从此处获取 .reg 文件并对其进行调整以匹配您的路径/可执行文件。 https://help.github.com/articles/getting-a-crash-dump/

然后您可以将 .dmp 文件带到您的机器上并在 Visual Studio / Windbg/SOS 中检查它 http://msdn.microsoft.com/en-us/library/d5zhxt22.aspx http://msdn.microsoft.com/en-us/library/windows/hardware/ff540665(v=vs.85).aspx

【讨论】:

以上是关于Visual Studio C#远程调试关闭windows服务的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“双”ssh 在远程 Linux 服务器上使用 Visual Studio 进行调试? [关闭]

Visual Studio 2017 远程调试

如何关闭“Visual Studio实时调试器”

从 Visual Studio 进行 Linux .NET 远程调试

是否可以设置 Visual Studio 2017,使其在远程 Linux 机器而不是本地机器上运行和调试 .NET Core C# 应用程序?

Visual Studio中的远程调试:远程调试器不支持这个版本的windows