Visual Studio调试断点冻结应用程序

时间:2013-06-17 08:40:58

标签: c# visual-studio-2010 debugging

我在代码中添加了几个断点,以便在到达时监视两个变量的值。该应用程序基本上从一个工作频率为500 Hz的微控制器生成的串口接收9600波特的数据流,并且必须根据某些规则“if”和“if else”过滤消息,以去除头字符并将其解析为其他变量用于计算用法。 这是代码:

 class Stripper
{
 public  void  Distri (string inComing, out string param1, out string param2, out string param3, out string param4)
    {
        string currentRes="";
        string currentMot = "";
        string temperature="";
        string numRPM="";
        string f = inComing;
        if (inComing.Length < 6)
        {
            f = ">123456<";
        }
        char firstChar = f[0];
        char lastChar = f[f.Length - 2];
        bool test1 =(firstChar.Equals('>'));
        bool test2 =(lastChar.Equals('<'));
        int messLenght = f.Length;

        try
        {
            if (test1 == true && test2 == true && messLenght <= 10)
            {
                f = f.Replace("<", "");
                f = f.Replace(">", "");

                if (f[0] == 'I')
                {
                    string _currentRes = f;
                    _currentRes = _currentRes.Replace("I", "");
                    currentRes = _currentRes;
                }

                else if (f[0] == 'M')
                {
                    string _currentMot = f;
                    _currentMot = _currentMot.Replace("M", "");
                    currentMot = _currentMot;
                }

                else if (f[0] == 'T')
                {
                    string _temperature = f;
                    _temperature = _temperature.Replace("T", "");
                    temperature = _temperature;
                }
                else if (f[0] == 'N')
                {
                    string _numRPM = f;
                    _numRPM = _numRPM.Replace("N", "");
                    numRPM = _numRPM;
                }

                else
                { }
            }

            else
            { }
        }
        catch (System.Exception)
        {

            throw;
        }

        param1 = currentRes;
        param2 = temperature;
        param3 = numRPM;
        param4 = currentMot;

        }
       }
      }

我面临的问题很奇怪,在某些时候我完全迷失了。基本上,变量“f”和“inComing”上的断点活动,应用程序立即无响应,为了使其工作,我不得不将流的速度从串行降低到1/100引入延迟。没有断点,应用程序可以毫无问题地获取完整的数据流。可能这种经历也可以帮助处于类似情况的其他人。 看起来断点正在大大减慢这个过程。我不认为它与我正在使用的电脑有关这是一个拥有16 Gb RAM和2.4 Ghz处理器i5的怪物。 我想知道为什么会发生这种情况,是否有办法避免这种问题而不是使用断点?

1 个答案:

答案 0 :(得分:1)

我在快速搜索Debug.WriteLine()上找到了它 是写入VS输出窗口的东西

这样您就可以获得实时值

另见link