.net Win7 64位上的VS2008:调试Windows服务
我正在尝试在Win7 64位上使用VS2008调试Windows服务。我遇到的问题是,无论我选择哪种构建配置:x86、x64或AnyCPU,我的断点都没有被命中 在服务启动后使用“Attach to Process”时,没有一个断点被命中-但是IDE没有通知我它们不会被命中(例如,通过制作实心的红色圆圈和轮廓)-看起来就像断点根本不存在一样 有人能给我指一下正确的方向吗 谢谢.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下启动的提升版)?首先是明显的问题 您
/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的方式重新编译所有内容。谢谢,谢谢你的投票。我想你仍然可以回答你自己的问题,然后接受这个答案。