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

.net Win7 64位上的VS2008:调试Windows服务,.net,visual-studio,windows-7,windows-services,64-bit,.net,Visual Studio,Windows 7,Windows Services,64 Bit,我正在尝试在Win7 64位上使用VS2008调试Windows服务。我遇到的问题是,无论我选择哪种构建配置:x86、x64或AnyCPU,我的断点都没有被命中 在服务启动后使用“Attach to Process”时,没有一个断点被命中-但是IDE没有通知我它们不会被命中(例如,通过制作实心的红色圆圈和轮廓)-看起来就像断点根本不存在一样 有人能给我指一下正确的方向吗 谢谢 /Richard.您是否以管理员身份运行Visual Studio(包括在UAC下启动的提升版)?首先是明显的问题 您

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

在服务启动后使用“Attach to Process”时,没有一个断点被命中-但是IDE没有通知我它们不会被命中(例如,通过制作实心的红色圆圈和轮廓)-看起来就像断点根本不存在一样

有人能给我指一下正确的方向吗

谢谢


/Richard.

您是否以管理员身份运行Visual Studio(包括在UAC下启动的提升版)?

首先是明显的问题

  • 您是在调试模式下编译还是在发布模式下编译
  • .pdb文件是否位于安装服务的位置
  • 是否确实正在执行设置断点的代码
如果这些都不是问题,请尝试在服务的构造函数中插入以下行

System.Diagnostics.Debugger.Break();

服务启动时,应提示您选择调试器。当调试器打开时,它将在编程断点处暂停,您可以从那里继续。我不使用Windows7,但我不认为VisualStudio2008的这一方面与WindowsXP相比有太大的变化。我一直使用这种编程方法来为我的Windows服务进入调试会话。

我知道这并不能回答您的直接问题,但我们从Eric De Carufel那里了解到,在开发和测试Windows服务时,这将非常有帮助

它是非侵入性的,并且摆脱了繁琐的“附加到流程”步骤


当它已经部署为Windows服务时,将其放入调试的能力也是很有价值的。例如,要查看堆栈跟踪,而不是刚刚在您身上消失的服务。

在调试模式下编译,PDB文件位于预期位置,100%确保设置断点的代码正在执行。我使用了Debugger.Break()方法,但没有起作用。还是不会碎!我之所以将这个问题标记为答案,是因为,尽管不是直接导致解决问题的行动,但您对编译模式的评论让我走上了正确的道路。最终,问题是试图在x86/x64混合解决方案中调试应用程序,这显然是IDE在Win7 x64上不喜欢的。按照x86的方式重新编译所有内容。谢谢,谢谢你的投票。我想你仍然可以回答你自己的问题,然后接受这个答案。