【问题标题】:Can't debug Windows Service -"attach to process"无法调试 Windows 服务 -“附加到进程”
【发布时间】:2012-10-18 17:23:02
【问题描述】:

Microsoft instructions state the following

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

出现“进程”对话框。

点击显示系统进程。

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

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

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

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

【问题讨论】:

  • 谢谢,但它对我不起作用。得到错误“无法从命令行启动服务....”
  • 尝试选中“显示所有用户的进程”复选框,在“附加到”下拉列表中选择托管代码并刷新进程列表
  • Yuriy,很遗憾您的建议没有帮助。仍然看不到列表中的服务。感谢您的尝试。
  • 连续循环不在 OnStart 中运行,是吗?

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


【解决方案1】:

您必须执行以下操作:

  1. 在 Visual Studio 管理员模式下打开您的解决方案。
  2. 确保您的服务正在运行。
  3. 打开“附加到进程窗口”
  4. 确保选中两个复选框(所有用户、所有会话)。
  5. 在列表中查找可执行文件的名称。

如果上述方法不起作用,您需要提供一些有关设置的其他详细信息。 :-)

【讨论】:

    【解决方案2】:

    您可以在服务中的某处添加,例如在 OnStart 方法中此代码:

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

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

    【讨论】:

    • 这可以让我在服务启动中调试功能,我只需在 Visual Studio 中打开解决方案以以管理员身份运行。然后我添加 System.Diagnostics.Debugger.Launch();在服务启动功能中。谢谢@Yuriy
    【解决方案3】:

    实际上,要让程序获得机器上每个用户的进程列表,该程序必须具有管理权限。确保您使用相应的帐户启动 Visual Studio。

    【讨论】:

    • 我以管理员身份启动了 VS,但不幸的是我仍然无法在列表中看到该服务。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      服务名称可能与进程名称不同。进程的名字很可能就是服务exe文件的名字。您可以在任务管理器或 Windows 服务与项目中进行检查。 (出现在“附加进程”窗口中的名称是进程的名称而不是服务的名称)

      【讨论】:

        【解决方案6】:

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

        确保选中所有用户的显示进程:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-20
          • 1970-01-01
          • 2013-02-07
          • 2018-08-15
          • 1970-01-01
          • 2020-04-17
          • 1970-01-01
          相关资源
          最近更新 更多