1

自从升级到 2008 年以来,我和这里的许多人都注意到,随机 VS 将不再介入代码或跳过断点。它已经到了调试成为真正的苦差事的阶段。我们正在运行 SP1,但也注意到 2008 basic 上的问题。

参考罗伯特的问题:我们在 Windows 服务中托管 WCF 和远程处理服务。本质上,来自客户端(通常是 windows exe)的调用最终会在服务本身和我们的代码中的线程中结束(而不是远程处理或 WCF 基础结构)。一旦进入我们的代码,断点就会有这种行为。

我们在这里所做的大部分调试都是在服务代码中进行的,因此附加到进程是非常宝贵的,有时不可能达到所需的状态,除非在进程启动后附加到它们。使用 resharper 等扩展的开发人员和运行 vanilla VS 的开发人员都会遇到这种情况。

看谷歌并没有太大帮助。

还有人经历过这个吗?

问候,普雷特


Spudlo 的回答对我们很有帮助。谢谢你。请从MSDN下载修复程序

4

4 回答 4

2

是的,当我忘记从 RELEASE 切换到 DEBUG 时。;)

在我意识到自己的愚蠢之前,总是让我发疯。

于 2008-11-14T04:05:00.813 回答
2

需要检查的一些事项:

  • 您的 PDB 是否与您的应用程序 dll 位于同一目录中?
  • 他们是调试版本吗?
  • 源的路径也不同吗?
  • 附加时是否加载 Dll(检查输出控制台)?
  • 断点在VS中是否显示为空心(未填充)圆圈?如果是这样,将鼠标悬停在断点上,它会告诉你为什么它不能设置断点。

也许作为一种解决方法,您可以从 VS 中启动该服务。如果您将应用程序更改为控制台应用程序,并添加一个调用 OnStart 方法的 main 方法(就像 windows 服务一样)。您仍然可以将应用程序安装为 Windows 服务,也可以直接从 VS 运行它:

public static void Main(string[] args)
{
    if (Environment.UserInteractive)
    {
        Console.WriteLine("Starting service...");
        Service1 svc = new Service1();
        svc.OnStart(args);
        Console.WriteLine("Started");
        Console.WriteLine("");
        Console.WriteLine("Press any key to stop");
        Console.Read();
        Console.WriteLine("Stopping...");
        svc.OnStop();
        Console.WriteLine("Stopped, Press any key to exit");
        Console.Read();
    }
    else
    {
        ServiceBase.Run(new Service1());
    }
}
于 2008-11-14T04:10:24.297 回答
2

是一篇带有补丁链接的博客文章。

于 2008-11-18T00:24:02.847 回答
1

我们看到了 SP1 的 BP 问题。我们将它报告给 Conenct ( https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=363453),MS已经向我们发送了一个 DLL 来修复它(似乎有效)。我预计 MS 将很快发布补丁。

由于您有没有 SP1 的问题,它可能有帮助,也可能没有帮助

于 2008-11-15T23:22:01.117 回答