标签:idt 操作 tar rri 写日志 namespace log ddt delay
最近第一次用C#写了一个windows service ,其实实现的内容比较简单。就是启动remoting 连接,但是调试相对初次写windws service 的我来说,比较烦。没有经验,而且没办法像调试其他windows 程序一样设置断点,无法看到运行过程。经过查看一些相关资料后,有了一点点调试的心得。特此留笔,以待今后使用。
相关源码:
TeamWorldService :
方法1:写日志
是最传统的调试windows service方法,也是大家在调试service 比较管用的方式,但是,调试起来还是不太明朗。你要在你认为可能出现错误的地方全部添加写日志的方法。我上面的代码就采用了AddTextLine 函数实现的这种方法。
方法2:附加进程
附加进程的方法可以像调试正常的widows程序一样,设置断点进行单步调试。但是,我必须在安装启动服务后,才可以进行附加此服务进程,可在附加的同时OnStart 函数已经执行完毕,所以对Onstart 无法调试。但是我可以通过设置启动服务延时来加载调试。
步骤如下:
1,设置启动服务延时,
注意:正常服务的启动时间为30秒左右,当服务启动时间超过30秒会报错!,所以不要在OnStart中做过多的操作,也可以用这种延时的方法启动服务,以防在启动服务时超时。
2、首先要对服务进行安装,然后启动服务。
3、打开vs2005 调试—>附加到进程,选择你的服务进程(如果找不到可以勾选 显示所有用户的进程),就可以了。
方法3:
我认为是这次调试对我帮助最大。
在Main 函数中,注释掉原有自动生成的代码,注意红字部分是要根据自己的服务名字来手工添加的
// ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
// 另一个服务添加到此进程中,请更改下行以
// 创建另一个服务对象。例如,
//
// ServicesToRun = new ServiceBase[] {new Service1(), new MySecondUserService()};
//
//ServicesToRun = new ServiceBase[] { new TeamWorldService() };
//ServiceBase.Run(ServicesToRun);
//******************************************
TeamWorldService obj = new TeamWorldService();
obj.OnStart();
//******************************************
然后把 protected override void OnStart(string[] args) 改为 public void OnStart()。
,设置你的断点,按 F5 运行就可以调试了。
以上是自己这次调试widows service 后,得到的一些方法。以待今后继续积累。
http://www.cnblogs.com/peak-weng/archive/2008/05/30/1210538.html
windows Service 之调试过程(附加到进程里调试,而且启动时间不能超过30秒)
标签:idt 操作 tar rri 写日志 namespace log ddt delay
原文地址:http://www.cnblogs.com/findumars/p/6147965.html