Google最新的ThreadSanitizer工具已更新至版本2,为使用该工具已有五年历史的工具提供了改进功能,可帮助开发人员在比过去更少的时间内发现更多编码问题。谷歌软件工程师亚历山大·波塔彭科(Alexander Potapenko)在4月21日发表于The Chromium Blog上的文章中写道,ThreadSanitizer(又名TSan)是一种基于二进制翻译的运行时数据竞赛检测器,它最初由Google工程师于2009年开发。“该工具帮助发现了多个项目中的数千个线程错误,包括Chromium中的将近180个错误。2010年,我们开始尝试使用基于编译器的工具而不是二进制翻译,并且一旦方法证明了自己,我们的团队便从头开始重新设计ThreadSanitizer。 ,专注于编译时检测,以提高速度和准确性。”
他写道,现在团队进一步推动了ThreadSanitizer v2的开发。现在,该工具已成为LLVM和GCC的一部分,“能够检测C ++和Go代码中的数据竞争,但它还能够报告同步问题,例如死锁,未连接的线程,销毁锁定的互斥体,使用异步信号不安全代码在信号处理程序等中。”
改进的ThreadSanitizer v2“可以识别原子操作,因此它可以生成更准确的报告,还可以找到无锁算法中的错误,否则很难检测到,” Potapenko写道。“例如,它帮助我们在LazyInstance中找到不正确的同步,错误的无锁队列实现以及V8中的并发扫描问题。”
ThreadSanitizer v2的速度比旧的ThreadSanitizer快20倍,“因此可以将其用于重量级的浏览器测试。”我们发现在代码中几个错误是不是由更小的单元测试覆盖了,就像比赛 的WebKit的字符串,垃圾收集在闪烁,一个释放后使用免费眨眼,在报告的WebRTC少数还有很多。这也提高了错误的可重复性:重复测试的次数越多,重现片状错误的机会就越大。”
他写道,在过去的六个月中,新工具检测到了近100个错误。Potapenko写道:“我们未来的计划包括在ClusterFuzz上广泛使用TSan,并为各种Chromium子项目添加定期测试,以快速捕获新的回归。”
他写道,开发人员可以在ThreadSanitizer页面上找到有关使用改进工具的更多信息。“该工具易于使用,可以与任何构建系统集成:只需添加一个编译时标记并运行程序即可查看错误报告。对于Chromium开发人员,在dev.chromium.org上有一个特殊的页面,其中包含说明”。
Google一直在为产品开发者开发新的和改进的工具。
2013年12月,Google 添加了新的Chrome工具,包括扩展的仿真和屏幕广播功能以及新的调试工具,以帮助开发人员更快地测试和调试其移动应用。这些工具使应用程序开发人员可以在编写代码时看到他们的代码如何在移动设备上显示,从而帮助他们创建更好的代码和应用程序。
Chrome的新开发者工具更新是在2013年8月又增加了三轮新工具之后进行的更新。这些工具包括Workspaces,它使开发人员可以在DevTools中实时编辑具有双向磁盘持久性的源文件;CSS预处理器映射;和代码段,使开发人员可以创建,编辑,保存和执行自定义JavaScript代码段。
2013年7月,Google发布了Beta版的新Dart软件开发套件和编辑器,以帮助开发人员更快地创建其代码。该公司还开始尝试一种称为QUIC(快速UDP Internet连接)的新网络协议,该协议可以在将来加快网络连接的速度。
新的Dart SDK和编辑器在其第一个Beta版本中,其性能和生产率得到了提高,旨在帮助开发人员自动化其代码创建,生成较小的JavaScript代码以及部署Dart Web应用程序。
2013年6月,Google推出了一个新的Cloud Playground环境,开发人员可以根据需要快速尝试想法,而不必致力于建立一个本地开发环境,该环境可以安全地在生产基础架构之外测试编码实验。目前,新的Cloud Playground仅限于支持Python 2.7 App Engine应用程序。
同样在2013年6月,Google 向开发人员开放了Google Maps Engine API,以便他们可以构建包含Google Maps功能和灵活性的消费者和业务应用程序。通过使用Maps API,开发人员现在可以使用Google的云基础架构将其数据添加到Google Map之上,并与消费者,员工或其他用户共享该自定义混搭。然后,地图可以由公司或组织内部共享,也可以在Web上发布。