我们正在将 Visual Studio 2010 解决方案迁移到 Visual Studio 2012。像往常一样,墨菲定律正在抬头。
我想做的事情相对简单,而且我过去已经做过很多次了 - 我只想附加到正在运行的 Windows 服务进程并单步执行它的代码。
FWIW 与此解决方案的其他项目一起,我能够按预期单步调试代码 - 只是这个 Windows 服务给我们带来了问题。
我们已经验证了可能导致此失败的明显因素...
1:我们已经确保 .pdb 调试符号与服务可执行文件和 DLL 一起包含
2:我们正在运行该服务的调试版本。
我假设这只是 Visual Studio 2012 中某个地方的一个愚蠢的设置导致了这个...要么是这样,要么我错过了一些简单的东西,只需要第二双眼睛...
最佳答案
调试服务的最简单方法是在调试版本中的 Running() 代码开头的某个位置插入 Assert(0)
。该断言将在服务运行时弹出,允许您将您选择的调试器附加到它。然后你可以做任何你想做的事情(例如设置断点、更改内存中的值等)。
如果 Visual Studio 2012 仍然无法连接到您的断言服务,则说明安装或配置中存在严重问题。如果它已附加但不允许您看到任何内容,则您可能需要在附加时启用“ native 代码”调试。
关于c# - 无法在 Visual Studio 2012 中调试 Windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16592377/