[windows服务]windows服务的调试

来源:互联网 发布:人肉什么味道 知乎 编辑:程序博客网 时间:2024/04/28 07:06

调试windows服务的方法:

1.改造windows服务为普通程序,像普通程序一样调试。

2.直接调试跟踪windows服务程序,此方法的调试过程如下:

windows服务的调试方法和我们一般的程序方法有些不一样,但是也是在IDE里面调试。MS的IDE也为我们考虑到了这些方面。跟我来看看怎样来调试一个windws服务吧?

大致分为一下几个步骤:

1. 建立windows服务程序,不管你是用win32 API,还是ATL,还是.NET,都可以实现的。
2.将代码写好,编译,保证没有错误。
3.现在到了调试的过程了,首先,在IDE中,找到你要调试的地方,加上断点,然后安装好服务。
服务的安装,其实就是设计到注册表的操作。在.NET平台下,我一般习惯用installutil这个程序来安装服务,或者写一个批处理文件(

%SystemRoot%/Microsoft.NET/Framework/v2.0.50727/installutil /U c:/MyServiceTest.exe

%SystemRoot%/Microsoft.NET/Framework/v2.0.50727/installutil c:/MyServiceTest.exe

net start MyServerName)

安装好之后,我们打开控制面板的“Administrator Tools”,找到"Services"选项,双击打开。在服务列表中,我们能找到我们安装的服务。然后运行这个服务。
4.现在到了关键的地方,在服务开始的时候,就会执行你的代码。为了调试的方便,我是在服务的代码开始处让,程序先Sleep20秒或更长,这样的好处看后面你就知道了。
5.切换回我们的IDE,在Debug菜单,里面有个Process(进程)选项。点击打开,在对话框的进程列表中,选择我们的服务相对应的进程,然后点击旁边的Attach(附加)按钮。这样,IDE就开始加载我们要调试的进程了。加载完毕之后,程序会停顿一下。(为什么?因为我们在服务的开始代码处,Sleep了20秒,喝口水等一下吧)。之后,黄色的光标,跳动到你的断点处,现在就可以像以往一样,来调试这个windows服务了。之所以在程序开始的地方Sleep20秒,是为我们在IDE附加这个Service进程的时候,留下一段缓冲的时间,不然当你的服务开始运行的时候,你的断点处的代码早就被执行过了,你断点自然不起作用了。

还有一些调试windows服务小的窍门,就是写日志文件。这也是调试windows service的一个比较好的方法,虽然比较笨,但是通过阅读你自己留下的日志,也能起到不小的作用的,还有就是写EnventLog,在事件查看器中观察问题。所以在编写程序的时候,要在关键的地方,记录日志,也是为以后程序的维护提供方便。
一点小小的经历,记录备忘怀之.

原创粉丝点击