windows服务:调试失败

本文关键字:失败 调试 服务 windows | 更新日期: 2023-09-27 18:29:54

我按照官方msdn中的说明调试我的windows服务:http://msdn.microsoft.com/en-us/library/7a50syb3.aspx然而,在我将进程附加到调试器并尝试在服务控制管理器中停止服务之后,该进程就消失了,调试器因此退出而没有遇到任何断点。我选择进程名称作为窗口服务应用程序的可执行文件。我做错什么了吗?

windows服务:调试失败

当调试器连接到进程时,单击蓝色的"停止"按钮通常会终止进程,这就是您看到服务进程消失的原因。当然,在这一点上,断点不会被击中,因为该进程的所有模块都已卸载。如果要从服务分离并仍然让它运行,请在Visual Studio的"调试"菜单中单击"全部分离"。

感觉您在调试服务时遇到了问题。调试Windows服务与在Visual Studio中调试其他项目略有不同。仅仅点击绿色的"播放"按钮并不会自动将服务置于调试模式。在许多情况下,需要在OnStart()方法中设置断点,因为这是问题发生的地方。我调试Windows服务的方法是,在程序尝试执行其他操作之前,将Thread.Sleep()语句放在OnStart()方法的顶部。您可以指定希望主线程休眠的时间,然后利用这段时间将VS调试器附加到Windows服务。例如:

 protected override void OnStart(string[] args)
 {
     Thread.Sleep(10000);
     // Rest of the code
 }

将给您10秒的时间连接到服务。安装服务,在Services窗口中启动,然后连接到它。

你能试着在服务的顶部添加这个吗。。。。

System.Diagnostics.Debugger.Launch();

或者,如果可能,将您的服务转换为使用http://topshelf-project.com/.它支持在visual studio中进行调试。并增加了允许服务"作为控制台应用程序运行"进行调试的功能。