2013-05-16 62 views
2

我们正在将Visual Studio 2010解决方案迁移到Visual Studio 2012.像往常一样,墨菲定律养育这个丑陋的头脑。无法在Visual Studio 2012中调试Windows服务

我想要做的事情比较简单,我在过去做了很多次 - 我只想附加到正在运行的Windows服务进程并进入它的代码。

与此解决方案的其他项目的FWIW我能够按预期进入和调试代码 - 这只是这个Windows服务,给我们带来了问题。

我们已经verfiied明显的事情,可能会导致此操作失败...

1:我们已经确保了.PDB调试符号包括沿着服务的可执行文件和DLL的

2:我们正在运行该服务的调试版本。

我假定这是在Visual Studio 2012的某个地方,是造成这只是个愚蠢的设置......如果不是这样,我失去了一些东西简单,只需要第二双眼睛......

+0

你有没有尝试过Debugger.Launch()在你的Windows服务中,然后安装并启动。因为它会触发线路,它会为您启动调试器。 – HatSoft

+0

您是否收到错误?不能设置断点?不能附加? – canhazbits

+0

您是在本地还是在另一台机器上运行服务? – AceJordin

回答

1

的调试服务绝对最简单的方法是插入你的调试版本的Assert(0)在运行()代码开头的某处。断言将在服务运行时弹出,允许您将所选的调试器附加到它。然后你可以做任何你想做的事情(比如设置断点,改变内存中的值等)。

如果的Visual Studio 2012还不会附加到您的认定服务,则是非常严重的掉在安装或配置。如果它附加,但不会让你看到任何东西,你可能需要在附加时启用“本地代码”调试。

1

以下为我工作:

  1. 建立在调试模式下的Windows服务;
  2. 将其发布并安装到您的开发机器上;
  3. 从服务管理控制台启动服务;
  4. 附加到Visual Studio中2012

处理后,这是我的断点得到了马上打。

请注意:在步骤4,您可能需要为“显示所有用户进程”选择,让您的服务可见能够连接到它,因为它很可能会在SYSTEM帐户下运行。

希望这可以帮助你走出追逐。

相关问题