首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clang静态分析器核心支持多线程程序吗?

clang静态分析器核心支持多线程程序吗?
EN

Stack Overflow用户
提问于 2022-05-23 03:47:24
回答 1查看 49关注 0票数 0

当clang静态分析器内核观察多线程编程构造时,它找不到任何关于它的行为的文档。内核是否识别它们并为每个线程创建单独的路径?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-23 08:46:05

不,Clang静态分析器不尝试直接分析多个线程的同时执行。相反,它一次只分析一条路径。引用开发人员手册

分析器核心执行给定程序的符号执行。所有输入值都用符号值表示;此外,引擎根据输入符号和路径推导程序中所有表达式的值。执行是路径敏感的,并探索每一个可能的路径通过程序。

Clang执行的与线程相关的检查是在单个路径的上下文中完成的。在浏览可用检查人员列表时,我发现了三个与C/C++线程相关的线程(目标C也有一些):

除了这些检查程序之外,还有Clang 螺纹安全分析系统,它依赖程序员提供的注释来(主要)强制正确使用互斥以保护共享数据。

所有这些都有一个共同点,就是所执行的属性需要在单个线程的上下文中正确地使用API。分析器不需要考虑其他线程可能在做什么来诊断这些问题。

一些商业静态分析工具有更多和更复杂的分析来检测线程代码的问题,并且可能考虑沿着多个独立(以及潜在的并发)路径发生的情况,但它们也不直接分析交织的可能性。

有些技术直接考虑并发执行和交织,通常与模型检验算法的某些变体一起使用,但将这些技术扩展到大于几十行代码的程序是一个开放的研究领域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72343074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档