繁体   English   中英

Windows服务:调试失败

[英]windows service: failed to debug

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

将调试器附加到进程后,单击蓝色的“停止”按钮通常会终止进程,这就是为什么看到服务进程消失的原因。 当然,此时不会断点,因为该进程的所有模块都已卸载。 如果要从服务分离并仍然让其运行,请在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中进行调试。 并且具有允许服务“作为控制台应用程序运行”进行调试的附加好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM