我正在尝试在Win7 64位上使用VS2008调试Windows服务。我遇到的问题是,无论我选择哪种构建配置,我的断点都没有被击中:x86,x64或AnyCPU。
在服务启动后使用“附加到进程”,没有任何断点被击中 - 但IDE没有通知我它们不会被命中(例如,通过制作纯红色圆圈和轮廓) - 它似乎只是表现为断点不存在。
有人能指出我在正确的方向吗?
由于
/理查德。
答案 0 :(得分:2)
首先是明显的问题......
如果这些都不是问题,请尝试在服务的构造函数中插入以下行。
System.Diagnostics.Debugger.Break();
当服务启动时,系统会提示您选择调试器。当调试器打开时,它将在程序断点处暂停,您可以从那里继续。我不使用Windows 7,但我不认为Visual Studio 2008的这方面已经从Windows XP发生了很大变化。我一直使用这种编程方法为我的Windows服务输入调试会话。
答案 1 :(得分:0)
我知道这不能回答你的直接问题,但是Eric De Carufel的found this approach在开发和测试Window Services时非常有帮助。
这是非侵入式的,并且摆脱了繁琐的“附加到过程”的步骤。
在已部署为Windows服务时将其置于调试中的能力也很有价值。例如,要查看堆栈跟踪而不是刚刚死亡的服务。
答案 2 :(得分:-1)
您是否以管理员身份运行Visual Studio(包括在UAC下启动)?