2012-10-14 17 views
-1

我想在編譯階段創建一個分析關鍵部分的C程序的工具。我正在尋找正確的算法,讓我這樣做。它可以在編譯器的任何階段。如何通過編程分析來檢測C程序中的關鍵部分?

+2

不要採取這種錯誤的方式,但就是不。您需要進行控制流分析,然後分析在併發階段共享的內存,然後嘗試猜測是否會導致競爭狀況。 – slugonamission

+0

同意@slugonamission。如果甚至有一絲暗示可能會發生意外副作用併發訪問,您必須*假設它會發生並相應地進行編碼。不知道意味着不瞭解您的代碼的併發性,並且沒有什麼是替代知道代碼。 – WhozCraig

+0

另外,我剛剛以爲(我昨天晚上很累)。如果你真的可以運行代碼,給Valgrind(使用Helgrind)一看。這不是一個靜態分析工具,但它可能會給你一些體面的見解。 – slugonamission

回答

4

您可能感興趣的這篇文章「Static analysis of run-time errors in embedded real-time parallel C programs」的。

Frama-C插件mthread被同時獨立地發展。它的工作原理可比。

上述兩個工具是每一個男人,幾年來已經表示至少十人 - 年工作的一個現有的基礎工作。正如一些人已經評論的那樣,如果你想對那些中等規模的程序做任何重要的和有用的事情,你不能只是爲了說服自己這是正確的,你就會有很多工作。