zoukankan      html  css  js  c++  java
  • 调试windows service的onstart事件

    这是转载的,觉得很不错,原文:http://www.cnblogs.com/xzwplus/archive/2008/03/30/1129452.html

    关于调试windows service, 其实这是一个老生常谈的问题了.

        通常的处理办法是, 在service运行后, 在调试器中选择attach to process.

        然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试. 往往当attach到我们的service的时候, 这部分代码已经执行过了. 于是, 有人提出, 可以另写一个project来调用这个OnStart方法, 或将OnStart方法中的代码搬到另一个project中测试. 不过, 这些方法终究不是以windows服务的方式调试的, 不能够最真实的反应service运行时的执行状况(如权限问题等环境问题).

        我的做法是, 在OnStart方法的最开始部分加上"Debugger.Launch()"的调用, 当service运行到此处时, 将会弹出一个选择调试器的对话框, 同时暂停在当前位置. 这样, 我们就做到了在代码中手动的启动调试器.

        示例代码如下:

    using System.Diagnostics; 
    public partial class MyService : ServiceBase{
        public MyService(){
            InitializeComponent();
        }  
        protected override void OnStart(string[] args){
    #if DEBUG
            Debugger.Launch();    //Launches and attaches a debugger to the process.
    #endif
            // TODO: add your initialize code here.
        }  
        protected override void OnStop(){
        }
    }
     
  • 相关阅读:
    QB学堂济南游记
    区间质数查询 luoguP1865
    基础数据结构 ①(栈|队列|链表)
    图论算法->最短路
    小谈记忆化搜索
    Hibernate其它API
    Hibernate中Session与本地线程绑定
    Hibernate事务代码规范写法
    实体类对象的三种状态
    对实体类的CRUD操作
  • 原文地址:https://www.cnblogs.com/bear831204/p/2135976.html
Copyright © 2011-2022 走看看