本篇经验将和大家介绍在C# 中如何进行Windows服务程序调试,希望对大家的工作和学习有所帮助!

工具/原料

  • 已编写好一个Windows服务程序

附加到进程(不推荐)

  1. 1
    首先要对服务进行安装,然后启动服务,如下图所示:




  2. 2
    打开VS项目,选择菜单 调试->附加到进程 选项,如下图所示:

  3. 3
    选择服务进程(如果找不到可以勾选 显示所有用户进程 选项)就可以了,找到服务对应的exe程序,如下图所示:

  4. 4
    在附加到进程的同时 OnStart 函数已经执行完毕,所以对 Onstart 无法调试。这个可以通过设置启动服务延时来加载调试,只需要在计时器Timer初始化的时候,传递一个参数即可,如下图所示:

  5. 5
    注意:正常服务的启动时间为30秒左右,当服务启动时间超过30秒会报错!

     

    所以不要在OnStart中做过多的操作,也可以用这种延时的方法启动服务,以防在启动服务时超时。
    END

修改源代码(推荐)

  1. 1找到服务主类中的OnStart方法,由
protected override void OnStart(string[] args)
	{
	  //todo something
	}
	修改成
	public void OnStart()
	{
	   //todo something
	}

  1. 如下图所示:

  2. 2注释掉Program.cs文件中的如下代码:
ServiceBase[] ServicesToRun;
	ServicesToRun = new ServiceBase[] 
	{ 
		 new Service1() 
	};
	ServiceBase.Run(ServicesToRun);
	修改成
	Service1 s1 = new Service1();
	s1.OnStart();
如下图所示:


  1. 3
    OnStart方法中利用F9打断点,然后按下F5就可以进行调试跟踪代码了,如下图所示:

  2. 4
    注意:调试时,需要将先前启动的服务首先停止。程序代码编写调试完成后,记得将第1和2步骤的修改还原即可。
    END

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。