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

5
我偶尔需要从自己的计算机调试远程服务器上的Windows服务,我使用Visual Studio远程调试器并通过连接到该服务器后附加源代码来完成调试:

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

问题是,当由于互联网故障等原因与服务器断开连接时,Windows服务在我的服务器上停止并关闭,我必须重新启动它。

也许我没有提供足够的信息,请询问所需信息而不是进行负面评分。

TIA。


我建议在Windows服务中放置try/catch,看看它是否因某些原因而崩溃。 如果是这样,并且连接是原因,那么它可能会给你更多的继续操作。 - Noctis
当我开发服务时,通常会以两种形式构建它们:一种是服务,另一种是控制台应用程序,它们之间的区别仅在于运行它们所需的“包装器”代码不同。我使用控制台版本来开发/调试我的代码,并在准备好部署时构建服务。我从未需要附加到/调试服务进程。 - Zenilogix
谢谢您的建议,但这不是问题所在。 我认为try和catch是多余的,因为我确定这是来自我的本地计算机而不是服务器的连接错误。 关于控制台,我也在本地运行了服务以进行跟踪,远程仅适用于特定情况。 - Ori Refael
1
那么您无法模拟代码在服务中运行时发生的情况,而不是在控制台应用程序中运行? 因此,我的建议是仅创建一个控制台应用程序并对其进行调试,而不是对服务进程本身进行调试。 - Pavel Donchev
1个回答

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/zh-cn/library/d5zhxt22.aspx http://msdn.microsoft.com/zh-cn/library/windows/hardware/ff540665(v=vs.85).aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接