windows服务程序的调试

一、服务程序概述

要使windows服务程序能够运行一般需要经过以下二步:

1、安装服务

安装服务可以有多种方法(可以能第三方的软件或命令实现),我介绍二种

1)、通过SC命令安装服务

         sc create "myservice" binPath= c:/myservice.exe

注意:binPath=后面有个空格,否则不能正确安装服务;myservice是服务名称。

2)、服务程序本身实现安装,如myservice.exe -i

        

2、调度服务

         服务调度无非是能服务进行“启动、暂停、停止”等动作。

 

二、服务程序的调试

服务程序的调试主要分为以下二类(所有程序也应该是如些的:)

1、调试服务程序启动过程

MSDN上有很多方法来做这件事,我这里只提供一种方法(摘自MSDN),具体步骤如下:

1)、打开注册表,找到以下key

HLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options

2)、新建KeyKey的值就是你的服务程序所对应可执行文件名(不含路径)

3)、在注册表右栏,新建一个“字符串值”,并命名为:Debugger,它的值为windbg.exe

      的路径(绝对路径),具体如下图所示。

 

 

4)、调度服务程序,此时会弹出windbg的主界面,请将源cpp文件打开,并设置断点。

      至此,服务程序的源代码级调试过程完成。

注意:

a、因为SCM在一定时间收不到对应服务程序的StartServiceCtrlDispatcher指令会报服务启动

  错误,所以,你尽量不要在调用这个函数之前耽误太多的时间。具体时间没有查到,估计

  20秒之内。

b、要调试ServiceMain的话,请在调用StartServiceCtrlDispatcher函数之前设置断点。因

   ServiceMain是个回调函数。

 

2、调试正在运行的服务程序

         这个简单,只需要打开windbg.exe,然后附加到指定的服务程序上就可以调试了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值