6
A
回答
4
如果您的意思是最廣義的「不變」,就像Daikon的鏈接頁面所使用的那樣,那麼許多靜態分析工具的工作可以被描述爲「發現不變量」,也許不是您正在尋找的表情不變量對於。
Frama-C的價值分析爲每個陳述積累了其結果,所有變量的可能值。在分析結束時,它可以在每個語句中呈現關於程序中每個變量的域變化的非關係信息。在this screenshot中,對於該確定性程序的所有執行,不變是在選定指令之前S
總是0,1,3或6。
你的問題中的兩個隱藏參數是你感興趣的不變量的形狀,以及你想要找到這些不變量的程序的形狀。例如,在Ira的回答中提到的SLAM被設計用於處理設備驅動程序代碼,並推斷只包含驗證正確使用系統API的必要信息的不變量。另一個工具,Astrée,在推斷正確的不變量以演示飛行控制軟件的運行時安全方面做得非常出色。
兩個自由度使得設計空間非常大。你不會找到任何適用於各種C程序的東西,並推斷出你可能感興趣的所有不變量,但如果你針對特定的應用領域和各種不變式細化你的問題,你將有更好的機會找到相關的答案。
5
參見The SLAM project: debugging system software via static analysis。它聲稱以靜態方式推斷不變量,正如你所要求的C語言一樣。作者Tom Ball因其在程序分析方面的傑出工作而廣爲人知。
相關問題
- 1. C併發進程和靜態變量
- 2. 靜態constexpr變量是否有意義?
- 3. C#線程靜態變量
- 4. C++靜態變量
- 5. C++靜態變量
- 6. C++ - 靜態變量
- 7. 靜態變量是否可以在C++中不存在類?
- 8. 是否有可能在處理程序中有一個靜態變量?
- 9. 具有不同實例的靜態模板類變量是否相同?
- 10. C++靜態變量動態
- 11. 是否有任何工具可以從一組C文件中提取所有變量(公共和靜態)?
- 12. C++類靜態變量問題 - C++新手C程序員
- 13. 是否繼承了靜態變量
- 14. 靜態與非靜態變量C++
- 15. 改變應用程序線程靜態變量沒有效果
- 16. C++是靜態變量初始化= atomic?
- 17. C#靜態變量跨線程訪問
- 18. 在C++中,靜態對象是否可以超出其靜態成員變量?
- 19. 在非靜態類中鎖定靜態變量是否安全?
- 20. 靜態後期綁定是否需要重載靜態變量?
- 21. C++私有靜態成員變量
- 22. PHP靜態變量不工作
- 23. C++中的靜態變量
- 24. C++:靜態成員變量
- 25. C++靜態成員變量
- 26. C#Webservice和靜態變量
- 27. 靜態變量 - Visual C
- 28. C中的靜態變量
- 29. c#:(靜態)班級變量
- 30. 非靜態類中的私有靜態變量對整個應用程序是否可用?
嗨,謝謝你的回覆。我對具有簡單結構(例如間隔(盒子))的不變量感興趣。我認爲Frama-C的價值分析更好,因爲它甚至提供了具體的價值,而不僅僅是間隔。 –
@VijayaraghavanMurali好吧,關於要保留哪些信息以及丟棄哪些信息有各種各樣的妥協,例如,Frama-C的值分析只保留多達8個元素的值集合,然後切換到具有同餘信息的區間。這是整數。對於'float'和'double'來說,它只使用區間來反映這樣的事實,即這些並不常用來表示具有單獨含義的謹慎值。而對於地址...詳情請見http://frama-c.com/download/frama-c-value-analysis.pdf –