无法在Visual Studio 2012中调试Windows服务

时间:2013-05-16 16:04:56

标签: c# debugging visual-studio-2012 windows-services

我们正在将Visual Studio 2010解决方案迁移到Visual Studio 2012.像往常一样,墨菲定律正在培养它的丑陋头脑。

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

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

我们已经证实了可能导致失败的显而易见的事情......

1:我们已经确保.pdb调试符号与服务可执行文件和DLL一起包含

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

我假设这只是Visual Studio 2012中某个导致此问题的愚蠢设置......或者我错过了一些简单的东西,只需要第二双眼睛......

2 个答案:

答案 0 :(得分:1)

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

如果Visual Studio 2012仍然无法附加到您的断言服务,那么在安装或配置中会出现严重问题。如果它附加但不会让你看到任何东西,你可能需要在附加时启用“本机代码”调试。

答案 1 :(得分:1)

以下对我有用:

  1. 在调试模式下构建Windows服务;
  2. 将其发布并安装在您的开发机器上;
  3. 从服务管理控制台启动服务;
  4. 从Visual Studio 2012中附加到进程
  5. 在此之后我的断点立即被击中。

    请注意:在第4步,您可能需要选择“显示所有用户的流程”,以使您的服务可以附加到服务,因为它可能会在SYSTEM帐户下运行。

    希望这可以帮助你走出Chase。