Win7 64位上的VS2008:调试Windows服务

时间:2009-09-09 10:29:21

标签: .net visual-studio windows-7 windows-services 64-bit

我正在尝试在Win7 64位上使用VS2008调试Windows服务。我遇到的问题是,无论我选择哪种构建配置,我的断点都没有被击中:x86,x64或AnyCPU。

在服务启动后使用“附加到进程”,没有任何断点被击中 - 但IDE没有通知我它们不会被命中(例如,通过制作纯红色圆圈和轮廓) - 它似乎只是表现为断点不存在。

有人能指出我在正确的方向吗?

由于

/理查德。

3 个答案:

答案 0 :(得分:2)

首先是明显的问题......

  • 您是在调试模式还是发布模式下编译?
  • .pdb文件是否位于安装服务的位置?
  • 您确定设置断点的代码实际上正在执行吗?

如果这些都不是问题,请尝试在服务的构造函数中插入以下行。

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下启动)?