我们正在将Visual Studio 2010解决方案迁移到Visual Studio 2012.像往常一样,墨菲定律正在培养它的丑陋头脑。
我想要做的事情相对简单,过去我做过很多次 - 我只想附加到正在运行的Windows服务进程并进入它的代码。
FWIW与此解决方案的其他项目我能够按预期进入并调试代码 - 只是这个Windows服务给我们带来了问题。
我们已经证实了可能导致失败的显而易见的事情......
1:我们已经确保.pdb调试符号与服务可执行文件和DLL一起包含
2:我们正在运行该服务的调试版本。
我假设这只是Visual Studio 2012中某个导致此问题的愚蠢设置......或者我错过了一些简单的东西,只需要第二双眼睛......
答案 0 :(得分:1)
调试服务的绝对最简单的方法是在Running()代码的开头某处的调试版本中插入Assert(0)
。断言将在服务运行时弹出,然后允许您将所选的调试器附加到它。然后你可以做任何你想做的事情(例如设置断点,更改内存中的值等)。
如果Visual Studio 2012仍然无法附加到您的断言服务,那么在安装或配置中会出现严重问题。如果它附加但不会让你看到任何东西,你可能需要在附加时启用“本机代码”调试。
答案 1 :(得分:1)
以下对我有用:
在此之后我的断点立即被击中。
请注意:在第4步,您可能需要选择“显示所有用户的流程”,以使您的服务可以附加到服务,因为它可能会在SYSTEM帐户下运行。
希望这可以帮助你走出Chase。