码迷,mamicode.com
首页 > Windows程序 > 详细

调试windows中onStart方法

时间:2021-06-30 17:56:41      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:and   span   dia   todo   ring   不能   分代   repr   方式   

关于调试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(){
    }
}
运行服务,会直接弹出调试提示确认框

调试windows中onStart方法

标签:and   span   dia   todo   ring   不能   分代   repr   方式   

原文地址:https://www.cnblogs.com/zzgxl/p/14951892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!