调试Windows服务的一些技巧

最近的项目涉及到windows服务的问题,那么写在windows服务中的代码怎样调试呢?windows服务的调试方法和我们一般的程序方法有些不一样,但是也是在IDE里面调试。MS的IDE也为我们考虑到了这些方面。跟我来看看怎样来调试一个windws服务吧?

大致分为一下几个步骤:

1. 建立windows服务程序,不管你是用win32 API,还是ATL,还是.NET,都可以实现的。
2.将代码写好,编译,保证没有错误。
3.现在到了调试的过程了,首先,在IDE中,找到你要调试的地方,加上断点,然后安装好服务。
服务的安装,其实就是设计到注册表的操作。在.NET平台下,我一般习惯用installutil这个程序来安装服务。安装好之后,我们打开控制面板的“Administrator Tools”,找到"Services"选项,双击打开。在服务列表中,我们能找到我们安装的服务。然后运行这个服务。
4.现在到了关键的地方,在服务开始的时候,就会执行你的代码。为了调试的方便,我是在服务的代码开始处让,程序先Sleep20秒,这样的好处看后面你就知道了。
5.切换回我们的IDE,在Debug菜单,里面有个Process(进程)选项。点击打开,在对话框的进程列表中,选择我们的服务相对应的进程,然后点击旁边的Attach(附加)按钮。这样,IDE就开始加载我们要调试的进程了。加载完毕之后,程序会停顿一下。(为什么?因为我们在服务的开始代码处,Sleep了20秒,喝口水等一下吧)。之后,黄色的光标,跳动到你的断点处,现在就可以像以往一样,来调试这个windows服务了。
之所以在程序开始的地方Sleep20秒,是为我们在IDE附加这个Service进程的时候,留下一段缓冲的时间,不然当你的服务开始运行的时候,你的断点处的代码早就被执行过了,你断点自然不起作用了。明白了吧?呵呵。

还有一些调试windows服务小的窍门,就是写日志文件。这也是调试windows service的一个比较好的方法,虽然比较笨,但是通过阅读你自己留下的日志,也能起到不小的作用的。所以在编写程序的时候,要在关键的地方,记录日志,也是为以后程序的维护提供方便。
好了,一点小小的经验,写下来,希望对大家有帮助 。  
 

你可能感兴趣的:(Windows/C#,windows,ide,.net,service,api,平台)