现在的位置: 首页 > 综合 > 正文

Windows服务学习二

2013年11月02日 ⁄ 综合 ⁄ 共 1220字 ⁄ 字号 评论关闭

  在基本掌握了服务的编写后,谈谈服务的调试是很重要的。代码有错并不害怕,怕的是我们不知道错在哪里。那又怎么知道去改呢。当你把东西搞掉的时候,是不是很恼火啊。你让别人帮你找,别人问:“你把它掉在那里了” 回答是:“我晓得掉在那里还用找吗?”。其实别人想问的是“你大概把它掉在什么地方了”。然后,你们就到最大可能掉的地方去找了,没找到。别人问:“你回忆当时还有那些人在这,看看是不是被别人捡到了哦”,给你提个醒后,或许你真的想到有哪些人在,去找那些人最后得到你的东西。或者就是别人不承认或你没看见别人捡到,人家也不知道是你的最后你就丢了。

  调试程序找出程序中的错误和找东西是一样的,但调试程序不会出现找不到的结果,最终都是会有结果的,只是时间长短的问题,改变时间长短,就要看我们掌握调试方法和使用调试方法的程度了。至于出现调试结果不满意,无法达到预期结果,那是程序设计原理的问题。如:在C语言中,你要把CString去转换成int类型,那结果是怎样,我没有试过。

 

下面看看服务程序如何调试:

  服务程序和一般的可执行文件的调试方法是不一样的,大家都知道。一般的可执行文件在VC中调试,使用F5、F9、F10、F11等设置断点,然后就可以进行单步调试,或断点调试等等。但在服务程序中,可执行文件并非由我们调用啊,是用服务管理器进行调用的。是不是很玄啊,别人的做事,你要去插手,让人家停下听你指挥。那就要看你有没有哪个权限和那中方法让别人心服口服了。那就看VC的吧:

在编写好一个服务程序后,我们不敢保证它是正确的,于是准备要对它进行调试。那就要在原代码中加入调试信息,使它在运行时听话。

加好调试信息后,就可以编译成可执行文件,让后安装服务。成功安装后,就可以运行服务了。同样调试服务也必须在安装后进行。

 

方法一:

在要进行调试的地方添加DebugBreak()函数,服务执行到此处时,弹出错误,但这不是真正的错误,是我们的DebugBreak产生的,你可以选择调试按钮进入调试。

方法二:

在main函数中使用Sleep()函数设置服务程序启动暂停时间(目的是留给我们操作时间等待我们对它进行调试了),在需要调试的地方设置好断点。

选择VC上的:

组建->开始调试->绑定到进程。弹出对话框显示当前系统中的进行,但是没有显示系统进程,由于服务是属于系统进程,所以我们要选择下面的复习框显示系统进程,选择我们的服务进程后确定即进入调试模式了。要注意到是在上面的操作时间应该小于在main中设置的时间,否则有可能服务已经运行过了设置的断点。

方法三:

在服务程序中调用OutputDebugString进行输出,再使用DebugView查看器查看即可。DebugView可以在网上下载。

方法四:

就是输出日志到文件,相对来说比较麻烦,但对于一个长期使用的系统、和短时间内无法查出错误的服务很实用。

 

最后说明:不要试图在服务中使用MessageBox弹出消息,那是没有用的。

抱歉!评论已关闭.