.Net开发应用

.Net项目开发、技术研究、应用技巧、心得体会

导航

调试windows服务应用程序

原文参看.

由于服务的运行必须在服务控制管理器的上下文中,而不是在Visual Studio .NET, 所以调试一个服务不能象调试其他 Visual Studio类型应用程序 。要调试一个服务,你必须启动这个服务,然后将这个服务的进程附加到调试器。 然后你才能使用Visual Studio的标准调试功能调试程序.

注意:作此工作之前,你需要了解这个进程是什么,并且理解附加它到调试器的顺序以及这种附加调试可能会kill那个进程 。比如,如果你附加调试WinLogon 进程,然后停止了调试,这时,系统将会停止,这是因为系统没有WinLogon将不能操作。

你只能附加调试一个运行着的服务,附加调试中断了你的服务的当前功能;它实际上不能停止或者暂停服务的处理。也就是说,在你开始调试时,如果你的服务正在运行,一旦你调试它,它还在启动状态,但是处理已经挂起(暂停

附加到服务进程的方法允许你调试大多数的服务代码,但不是全部;比如,服务已经启动,你就不能以这种方式调试OnStart 方法, 也不能调试在Main 方法中用于装入本服务的代码。这个问题可用另个方式来解决,你可以在你的服务理创建一个临时的第二个服务,这个服务只用来调试。你可安装两个服务,然后启动这第二个服务去装入真正想要的第一个服务进程。一旦临时的服务启动了第一个服务进程,你就能够使用Visual Studio .NET 的调试菜单功能取附加到这个服务进程了。
 
附加进程完毕后,你可以设置断点。一旦你退出用户附加到进程对话框,你实际上已经出于调试模式。你可使用服务控制管理器启动,停止,暂停或者继续你的服务,这样就会命中你设置的断点。调试完后移除这个临时服务即可。

注意:调试OnStart 方法很困难,这是因为windows服务管理器给启动服务的所有企图只有30秒的时间限制。详细信息,看 Troubleshooting: Debugging Windows Services.

调试服务
1、安装服务,更多信息,看 Installing and Uninstalling Services.

2、启动服务,可从服务控制管理器,服务Explorer,或者代码启动。更多信息,看tarting Services.

3、Visual Studio .NET, 选择调试菜单的进程.

进程菜单对话框上

    1、点击显示系统进程

    2、在可用进程中,点击你的服务进程,然后点击附加

          提示:进程名和服务的可执行文件名一致 

    附加进程对话框出现

    1、选择任何适用的选项. 然后点击OK关闭对话框

              注意:你已经处于调试模式了

     2、在你的代码里设置断点。

    3、访问服务控制管理器,操作你的服务,发出停止,暂停,继续命令以命中断点。更多的服务控制管理信息,参看Starting Services.

posted on 2005-11-14 16:20  风也火  阅读(2095)  评论(0)    收藏  举报