在发布此问题之前,我试图找到答案。我在另一台机器上运行了一个Windows服务。我在C#中编写了服务,运行服务可执行文件的目录包含可执行文件和调试文件(.pdb)。我尝试使用VS 2012远程调试首次远程调试服务。我能够成功附加到服务流程。但是,因为这是我第一次不知道接下来我能做些什么。我点击了暂停按钮,暂停ServiceBase.Run(ServicesToRun)行的服务,这对我来说并不是很有用。该服务有一个定时器,每30秒启动一次,并在定时器事件中运行代码。
我的问题是......在这种情况下,有没有办法使用调试器逐步执行代码。 我是否需要在我的代码库中安装一些特定于调试的代码,这样当调试器附加它时,我会在代码中找到可以逐步执行代码的位置?
谢谢, 安德鲁。
答案 0 :(得分:0)
有几种方法可以调试您开发的远程应用程序或Windows服务。如果你在你的机器(本地)中很容易调试。
System.Diagnostics.Debugger.Launch();
但是当你在不同的机器中时,它取决于你的两台机器是如何连接的。这意味着您在调试远程应用程序/服务方面存在一些限制。
快速搜索给了我以下结果,这对我来说似乎很有帮助,
您可以使用visual studio用于连接远程设备和调试的 远程调试监视器 。您可以在How to: Run the Remote Debugging Monitor上找到明确的说明。
还有另一个工具,可让您在正确设置后调试远程应用程序。但它有一些你必须遵守的限制或条件。
以下是名为 远程工具 的工具,您可以在How to: Set Up Remote Debugging上找到MSDN的详细设置流程。
有关使用此工具的先决条件的明确引用。但是我仍然会为快速审稿人重述这些内容。
如果您找到更好的工作解决方案,请随意分享。
答案 1 :(得分:0)
感谢您的回复。它提醒我在这里为我这样的人发布我的解决方案。
解决方案很简单(一旦你知道它就会一直存在)。
确保在目标计算机上运行的代码与在Visual Studio中打开的代码相同。它必须是相同的程序集和版本,否则调试器将无法达到您的断点。确保将断点设置在希望调试器中断执行的位置。然后连接到目标机器进程并等待计时器启动并运行设置断点的进程。
希望这有帮助。
安德鲁。