这个问题还是去年12月份在使用VS2010时发现的,之后报告给了Microsoft Connect(英语很差,见谅,不过发现Microsoft回复中也有两个英文单词拼写错误,难怪我金山词霸半天没查到:)),并得到确认会在以后进行修复。一直没时间写,今天拿来分享一下。
备注:微软将在3月10日发布Visual Studio SP1,不知这个小问题能否在这次更新中得到修复。
VS2010提供了一个新功能,DataTip。以前调试时,如果要看某一个变量的值,常常会用鼠标停留在一个变量上,则会给出一个提示来显示变量的值,但是鼠标移开后就看不到提示内容了。VS2010的DataTip功能则是为了让数据提示更方便的显示出来,将鼠标停留在某个变量上,然后会弹出提示框,接着如果点击提示框的最右边的箭头,则这个提示就会一直悬停住而不会消失,除非手动点击小叉关闭。对DataTip的介绍,可参考VS2010调试利器的第二部分关于调试数据提示(DataTip)的介绍,这里不再赘述。
Bug重现:如上所说,由于调试时可以用两种方式(鼠标悬停和DataTip)同时查看到变量的值,因此在使用过程中,发现在某些特殊情况下,两者的值显示不一致!我发现的导致这种不一致的情景是:当显示StringBuilder对象内容中有转义字符时,如下图:
通过多次测试,发现,DataTip当见到有转义字符时,进行了完整的转义,而鼠标悬停则只对部分转义字符进行转义,而部分不进行转义(\t、\b等反斜杠加英文字母的情况没转义),无论是什么规律,对于同一个对象,同一时刻,给出用户不同的调试信息,显然是有问题的。