使用VS2012远程调试Windows服务

时间:2014-11-12 10:27:47

标签: visual-studio windows-services remote-debugging

在发布此问题之前,我试图找到答案。我在另一台机器上运行了一个Windows服务。我在C#中编写了服务,运行服务可执行文件的目录包含可执行文件和调试文件(.pdb)。我尝试使用VS 2012远程调试首次远程调试服务。我能够成功附加到服务流程。但是,因为这是我第一次不知道接下来我能做些什么。我点击了暂停按钮,暂停ServiceBase.Run(ServicesToRun)行的服务,这对我来说并不是很有用。该服务有一个定时器,每30秒启动一次,并在定时器事件中运行代码。

我的问题是......在这种情况下,有没有办法使用调试器逐步执行代码。 我是否需要在我的代码库中安装一些特定于调试的代码,这样当调试器附加它时,我会在代码中找到可以逐步执行代码的位置?

谢谢, 安德鲁。

2 个答案:

答案 0 :(得分:0)

有几种方法可以调试您开发的远程应用程序或Windows服务。如果你在你的机器(本地)中很容易调试。

System.Diagnostics.Debugger.Launch();

但是当你在不同的机器中时,它取决于你的两台机器是如何连接的。这意味着您在调试远程应用程序/服务方面存在一些限制。

快速搜索给了我以下结果,这对我来说似乎很有帮助,

您可以使用visual studio用于连接远程设备和调试的 远程调试监视器 。您可以在How to: Run the Remote Debugging Monitor上找到明确的说明。

还有另一个工具,可让您在正确设置后调试远程应用程序。但它有一些你必须遵守的限制或条件。

以下是名为 远程工具 的工具,您可以在How to: Set Up Remote Debugging上找到MSDN的详细设置流程。

有关使用此工具的先决条件的明确引用。但是我仍然会为快速审稿人重述这些内容。

使用Visual Studio远程工具的先决条件

        要在远程设备上进行调试:

        
  • 远程设备和Visual Studio计算机必须通过网络连接或通过以太网电缆直接连接。 不支持通过互联网进行调试

  •     
  • 远程设备必须运行Visual Studio 2012的远程工具。

  •     
  • 您必须是管理员才能在远程设备上安装远程工具。要与远程工具通信,您必须具有远程设备的用户访问权限。

如果您找到更好的工作解决方案,请随意分享。

答案 1 :(得分:0)

感谢您的回复。它提醒我在这里为我这样的人发布我的解决方案。

解决方案很简单(一旦你知道它就会一直存在)。

确保在目标计算机上运行的代码与在Visual Studio中打开的代码相同。它必须是相同的程序集和版本,否则调试器将无法达到您的断点。确保将断点设置在希望调试器中断执行的位置。然后连接到目标机器进程并等待计时器启动并运行设置断点的进程。

希望这有帮助。

安德鲁。