代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

在不使用其他应用程序的代码的情况下调试windows服务

  •  1
  • GurdeepS  · 技术社区  · 14 年前

    是否可以在不使用可启动应用程序中的代码的情况下调试windows服务或类库?有一个线程关于这样做,但技术不工作,并不断说“无法启动服务…”,因为我正在使用windows服务。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Hans Olsson    14 年前

    在你的主要功能,而不是调用 ServiceBase.Run(servicesToRun)

    我通常输入代码来检查命令行参数,如下所示:

    -c run in console mode
    -i install the service
    -u uninstall the service
    none run the service
    

    然后将VS设置为在调试模式下以-c发送。

        2
  •  3
  •   Hristo Deshev    14 年前

    TopShelf . 它将允许您创建一个简单的控制台应用程序,您可以作为控制台应用程序进行调试,但它也可以注册为服务并作为服务运行。

    根据我的经验,这非常方便,因为如果需要,您可以轻松地调试服务,而无需更改任何代码。

        3
  •  0
  •   Paul Talbot    14 年前

    不管怎样,把它添加到OnStart,构建,安装和启动你的服务中。一旦你开始了,它就会像挂起来一样。附加到服务进程(确保您选择了正确的附加到代码基,这样您甚至可以调试启动。

    protected override void OnStart(string[] args)
    {
    #if DEBUG
        while (!Debugger.IsAttached)      // Waiting until debugger is attached
        {
            RequestAdditionalTime(1000);  // Prevents the service from timeout
            Thread.Sleep(1000);           // Gives you time to attach the debugger   
        }
        RequestAdditionalTime(20000);     // for Debugging the OnStart method,
                                          // increase as needed to prevent timeouts
    #endif
    
        // here is your startup code with breakpoints
    }