c# - 无法在 Visual Studio 2012 中调试 Windows 服务

标签 c# debugging visual-studio-2012 windows-services

我们正在将 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/

相关文章:

c# - 排序字符串列表

c# - 获取 QuickFix/n 的 session 属性(用户名和密码)

是否可以使用 gdb 或其他工具来检测复杂程序的某些部分(例如循环),这些部分的目标优化时间比预期的要长?

debugging - 如何附加并调试在 Windows Azure 模拟器中运行的 ASP.NET MVC 应用程序?

c# - 如何让 Visual Studio Intellisense 发现继承的子类?

c# - 无法使用 VB,因为已指定另一种语言

c# - 如何使用 C# 和 Entity Framework 执行存储过程并忘记它?

c# - 连接池错误 LINQ to SQL

c++ - 字符签名最严重的副作用。 (解释符号对字符和类型转换的影响)

c# - Visual Studio 2012 中扩展名为 .bak 的类文件