无法调试Windows服务 - “附加到进程”

时间:2012-10-18 17:23:03

标签: .net visual-studio-2010 windows-services

Microsoft instructions state the following

  

在Visual Studio中,从“调试”菜单中选择“附加到进程”。

     

出现“进程”对话框。

     

单击“显示系统进程”。

     

在“可用进程”部分中,单击您的进程   单击“服务”,然后单击“附加”。

但是,我没有看到“显示系统进程”。选项。 我已经尝试检查其他选项,但我的服务没有显示在列表中。

enter image description here

是的,我已经安装并启动了服务,并且可以在服务管理器中看到它。

我也知道调试onstart是不可能的。但是,我有一个连续的循环运行。

6 个答案:

答案 0 :(得分:15)

您必须执行以下操作:

  1. 以Visual Studio管理员模式打开解决方案。
  2. 确保您的服务正在运行。
  3. 打开“附加到流程窗口”
  4. 确保选中这两个复选框(所有用户,所有会话)。
  5. 在列表中找到可执行文件的名称。
  6. 如果上述方法无效,则需要提供有关设置的其他详细信息。 : - )

答案 1 :(得分:8)

您可以在服务中添加某个地方,例如在OnStart方法中添加以下代码:

#if DEBUG
    System.Diagnostics.Debugger.Launch();
#endif

在服务启动时,您将看到调试过程的提示对话框。不要忘记在Debug模式下构建并切换到生产中的Release

答案 2 :(得分:0)

实际上,为了让程序获取机器上每个用户的进程列表,该程序必须具有管理权限。确保使用相应的帐户启动visual studio。

答案 3 :(得分:0)

确保所选代码类型设置正确无误。您可以通过单击“附加到:”旁边的 [选择...] 按钮来管理它们。在您附加的图像中,您已将其设置为“自动:本机代码”。尝试其他一些设置。 注意:更改设置后按 [刷新] 按钮更新显示的进程列表。

答案 4 :(得分:0)

服务的名称可能与进程的名称不同。进程的名称可能是服务exe文件的名称。您可以在任务管理器或Windows Service vs Project中进行检查。 (“附加进程”窗口中显示的名称是进程的名称而不是服务的名称)

答案 5 :(得分:0)

默认情况下,不在您的帐户下运行的进程将被隐藏,这就是默认情况下服务的运行方式,除非您将它们设置为使用自定义用户运行。

确保检查所有用户的显示进程: enter image description here