【问题标题】:How to debug a windows service with attaching visual studio? [duplicate]如何调试带有附加 Visual Studio 的 Windows 服务? [复制]
【发布时间】:2016-04-24 23:10:18
【问题描述】:

我知道这个问题已经被问了 1000 次,但我从未见过一个好的答案。我想调试我的 Windows 服务,并尝试将 Visual Studio 附加到它。从那以后我不知道该怎么办?

我的服务正在运行,我放置了一些断点并附加了调试器,但它从来没有做任何事情。我的服务中有一个计时器,它在特殊时间执行一个方法。我为该方法设置了一个断点,我的服务执行了它但没有识别出断点。

有人可以向我解释如何正确执行此操作,或者是否可以通过屏幕截图逐步说明。

我真的很想用附加的m来做

谢谢

【问题讨论】:

  • 为此,您需要在解决方案中创建一个表单并将服务代码功能复制到按钮单击事件。当我这样做时,我可以建议你也这样做。
  • 不是一个真正的答案,所以你会得到一个评论。如果您使用 topshelf (topshelf-project.com) 创建服务,您可以将它们作为普通应用程序启动,它们的工作方式与作为服务运行时相同,但它们更容易调试
  • 确保您拥有构成服务的程序集的完整和最新符号:没有这些 VS 将无法将源代码与已编译的程序集相关联。查看调试 |窗户 |模块将向您显示已找到的符号。

标签: c# debugging service


【解决方案1】:

根据您的 Windows 服务的功能,另一种方法可能是使用单元测试作为应用程序的“入口点”并以这种方式逐步执行。

[TestMethod]
public void MyServiceEntryPoint()
{
   var service = new Service1();   
}

【讨论】:

    【解决方案2】:

    在覆盖的OnStart() 中,您必须为其添加以下条件块:

    protected override void OnStart(string[] args)
    {
      #if DEBUG
      System.Diagnostics.Debugger.Launch();
      #endif
    
      // you code here
      // for example you time initialization here
    }
    

    请参阅this MSDN link 了解更多详情。

    上述方法是你想在系统上安装然后调试它,如果你也可以不安装调试它然后参考this article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-08
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      相关资源
      最近更新 更多