基于Polyspace的并发分析

杰伊·亚伯拉罕、普奈特·拉尔和阿尼尔班·甘戈帕迪亚

本文概述了R2018a中的两项改进,它们使查看数据竞争和其他基于多任务的结果变得更加容易。

多空间®已经支持金宝app多任务和多线程代码的并发分析一段时间了™ 包括常见缺陷的检查程序,如数据争用、死锁和双重锁定文档多空间码验证器™ 支持同时运行的多个任务或线程的验证金宝app。(了解如何在中设置此选项。)文档.)

突出关键数据竞争

在R2018a中,Polyspace Bug Finder数据竞争检查器可以区分写-写冲突和更良性的读-写冲突。您可以选择只查看来自两个写入操作之间冲突的数据竞争。“结果详细信息”部分中提供的消息(结果详细信息窗口中的黄色框,如下所示)将包含一行额外的文本,说明“变量值可通过写并发访问进行更改。”

“结果详细信息”窗口提供写入冲突信息。

如下图所示,在“结果列表”窗口中,您可以使用“详细信息”列筛选具有此条件的数据竞争。使用此筛选,您可以关注不同线程中两个写入操作之间的冲突,这可能导致内存损坏和结果不确定。这些写入冲突不再隐藏在写操作和读操作之间的良性冲突中。

在“结果列表”窗口中,可以使用“详细信息”列筛选数据竞争。

并发建模的显示

在R2018a中,Polyspace Bug Finder和Polyspace Code Prover使您能够在一个简单的整合视图中查看从代码中提取的所有任务和中断,以及您创建的配置。要查看此合并视图,请单击并发建模Polyspace分析完成后在仪表板上的链接。此分析的新视图为您提供了两个好处:

  • 轻松抽查并发建模:您可以检查Polyspace是否从代码中正确检测到多任务配置。例如,如果您知道某个特定功能充当中断,则可以确认Polyspace已检测到该功能并将其配置为中断。
  • 确定优先事项:此合并视图中的入口点按优先级顺序分组:中断、可抢占中断、不可抢占任务和(可抢占)任务。为了理解为什么两个入口点之间不会发生数据竞争(使用Polyspace Bug Finder),您可以检查其中一个入口点的优先级是否低于另一个入口点。

并发建模链接提供了一个整合视图。