摘要:
一次Reboot=975年 在开始本文之前先做一个小调查:有多少朋友喜欢Reboot?答案A:我喜欢,每天都要Reboot N次。答案B:我不喜欢,最好一个星期都不要Reboot。如果没有意外的话,相信大部分人都可以归到B那一类,毕竟很少人会愿意中断自己所做的事情,把正在编辑的文章、代码等等一一存盘,然后重新启动,等待几分钟,再重新打开文档、代码编辑的。 不过,很遗憾的是,新版本的.NET的安装在... 阅读全文
摘要:
CLR小组中存在着大量的回归测试,这些回归测试会定期执行来发现CLR中的Bug,Developer在Checkin之前,也需要执行这些测试的一部分(大概是10小时左右,如果全部跑的话估计要好几天)。这些测试对于保证CLR的质量是至关重要的。有时候,这些测试会偶尔失败,比如跑100次失败大概一到两次,有些极端的例子甚至是10000次才失败一次。像这种问题通常是很难调试的。在前面调试Bug的神兵利器:... 阅读全文
摘要:
我们先来看一个在Outlook上运行.NET插件的一个情景。暂时机器上面安装的是CLR v1.1,Outlook上运行了一个Addin,在v1.1上编写和测试完毕,运行良好。之后,用户在机器上面安装v2.0。因为Outlook采取的方式是总是启动最新的.NET Framework(这也是有原因的,因为Outlook希望能够运行所有的版本的.NET Addin),Outlook自动会运行CLR v2... 阅读全文
摘要:
什么是契约 我们先来看一个很简单的例子: Void WordList.Insert(string word) 这个函数负责将word以升序插入到WordList中的单词列表中,word不可以为NULL。 上面这些说明文字都是用来描述此函数的行为的。当使用该函数的调用者看到这些说明文字的时候,便知道函数应该如何调用以及在不同情况下的函数行为,换言之,上面这段说明文字简单的描述了函数调用者和被调用者的... 阅读全文
摘要:
在最新一期的.NET 4.0新特性系列课程中,我和我的同事将给大家介绍Beta1中的一些新特性,具体信息如下: .NET 4.0中的新特性系列课程(3):.NET 4.0 Beta1 Interop 新特性介绍 (Level 200) 讲 师:张羿、朱永泰 课程简介:.NET 4.0 Beta1在Interop,也就是互操作功能上有了较大的改进,主要是能够帮助开发者更自由的自定义互操作的行为,以... 阅读全文
摘要:
.NET Framework v4.0和VisualStudio 2010 Beta1已经出来有阵子了,估计有些喜欢尝鲜的朋友已经下载试用了。这一次发布包含了大量的新功能。我们上海CLR开发团队会编写一系列的文章介绍Interop的相关新功能。我来给大家简单介绍一下Stub Method Redirection功能。这个功能是CLR上海开发团队设计、开发并测试的新功能之一,这一次我们上海CLR小组... 阅读全文
摘要:
最近在网上发现一个小程序Windows Live Writer Backup Utility可以用来备份Windows Live Writer的Blog设置。我有好几个Blog,使用Windows Live Writer在不同Blog上面发布非常方便,但是因为我有时候会重装一下系统试一下其他的系统,比如Windows 7 Beta,并且马上可能就要最近出RC,因此,如果可以备份Blog的设置的话是... 阅读全文
摘要:
不知道各位使用.NET开发的朋友是否有遇到过一些非常奇怪的问题而不知道如何下手呢?这个时侯CLR本身提供的StressLog功能就非常有用了。这个StressLog可以在很多时候把CLR所做的事情记录下来,比如,对于一个很简单的最后抛出异常的.NET程序Log大致如下: STRESS LOG: facilitiesToLog = 0x8000ffff levelToLog = 16 MaxLogS... 阅读全文
摘要:
在.NET 4.0中引入了一个新功能:Corrupted State Exceptions。听上去名字很神秘,实际上这个功能主要是限制对Exception的错误用法:捕获AccessViolationException/SEHException等可能会造成程序状态错误而无法正确继续的种种异常,具体可以参看CLR程序经理Andrew Pardoe的这篇MSDN文章:http://msdn.micro... 阅读全文
摘要:
前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT。比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的)。初步想到的有下面几种方案来调试: 1. 设置数据断点 2. 一步... 阅读全文