【问题标题】:Visual Studio ridiculously slow debuggingVisual Studio 调试速度慢得离谱
【发布时间】:2013-01-04 18:49:32
【问题描述】:

我正在尝试使用带有布尔条件的断点在 VS2010 中调试程序。这个特殊的断点非常慢,使我的程序运行速度比没有条件或使用常规无条件断点慢数百倍。

我的问题是,这是 Visual Studio 的常见问题吗?我不敢相信调试器会这么慢?布尔表达式非常简单,它只是说当 i == x 在 for 循环中时中断程序。

感谢任何帮助,因为它使调试变得非常痛苦。

谢谢 理查德

        public static RawNetCalculationResults newCATXLNets(IList<Loss> RawLosses, IList<ReinsuranceProgramme> Programme) //Loss contains the properties Year, EventID, Loss Value
    {
        List<Recoveries> NetRawLosses = new List<Recoveries>(RawLosses.Count * Programme.Count);    //Initiate list with required capacity

        //Loop over each element in RawLosses List and do some calculations
        foreach (var e in RawLosses)
        {                           //<----BREAK POINT HERE (e.Year == x)
            foreach (var layer in Programme.Where(x => x.Type == ReinsuranceType.CATXL))
            {

【问题讨论】:

  • 它可能不是调试器。你能给我们看看代码吗?
  • 我用代码编辑了我的问题。我在外循环上有一个断点。所以当外循环中某个元素的属性达到 x 时(x 是一个 int,表示 List 中包含的属性 Year)。删除断点意味着我的代码运行速度非常快(整个循环只需几秒钟),添加单个断点意味着大约需要 20 分钟。
  • 在这里发现了一个类似的问题:stackoverflow.com/questions/32391419/…

标签: c# visual-studio-2010 debugging


【解决方案1】:

是的,条件断点很慢。

作为替代方案,您可以使用 Debug.Assert:

Debug.Assert( i != x );

这将导致断言在i == x 时触发,您可以从那里进行调试。

【讨论】:

  • 我更喜欢:if (condition) Debugger.Break();
  • 谢谢,我会试一试的。
  • 效果很好,我最终使用 Debugger.Break 来获得确切的功能。与此相比,断点本身的速度有点奇怪。
  • 显然这与用于调试的实际物理硬件有关——这不是我猜到的。 codeproject.com/Questions/501675/…
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 2012-03-24
  • 1970-01-01
  • 2010-10-10
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
相关资源
最近更新 更多