【问题标题】:How do I detect critical sections in a C program by analyzing it programmatically? [closed]如何通过以编程方式分析 C 程序中的关键部分? [关闭]
【发布时间】:2012-10-14 21:37:32
【问题描述】:

我想创建一个在编译阶段分析 C 程序的关键部分的工具。我正在寻找可以让我做到这一点的正确算法。它可以在编译器的任何阶段。

【问题讨论】:

  • 不要走错路,但就是不要。您需要进行控制流分析,然后分析并发阶段共享的内存,然后尝试猜测是否会导致竞争条件。
  • 同意@slugonamission。如果甚至暗示并发访问可能会产生意外的副作用,您必须假设发生并相应地编写代码。不知道意味着不理解代码的并发性,没有什么可以代替知道代码。
  • 另外,我只是想(我昨晚很累)。如果你真的可以运行代码,看看 Valgrind(使用 Helgrind)。它不是一个静态分析工具,但它可能会给你一些不错的见解。

标签: c multithreading operating-system critical-section


【解决方案1】:

您可能对这篇文章“Static analysis of run-time errors in embedded real-time parallel C programs”感兴趣。

Frama-C插件mthread是同时独立开发的。它适用于类似的原则。

上述两种工具中的每一种都是在现有基础上的人工年工作量,而现有基础已经代表了至少十人年的工作量。正如一些人已经评论过的那样,如果您想为这种中等规模的程序做任何有意义且有用的事情,而您不能仅仅通过阅读来说服自己它是正确的,那么您将需要做很多工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多