[英]C#/.NET analysis tool to find race conditions/deadlocks
是否有分析.NET代碼並查找競爭條件的工具?
我有一些代碼具有公共靜態屬性,該屬性獲取或創建一個私有靜態字段。 它還有一個公共靜態方法,可將此字段設置為null(...是的,我知道!..)
由於這兩種方法都沒有鎖定,因此可以肯定的是,將來事情會變得非常糟糕。 我需要一個可以遞歸地處理調用這兩種方法之一的工具,並查看是否在另一個線程上產生了任何東西。
我在尋找工具或nDepend SQL腳本(如果可能)。
Jinx將在運行時(不是靜態地)執行此操作,但可能值得一看。
我一直在嘗試如何輕松地跟蹤它們。 我一直在努力跟蹤一些死鎖,尤其是在使用許多不同的鎖語句的情況下。
我的目標是在死鎖發生之前進行檢測,例如,如果您有兩個資源,則必須始終以相同的順序使用它們,否則可能會發生死鎖。
lock (lockObj1)
lock (lockObj2)
{
// some code
}
...在應用程序中的其他地方...
lock (lockObj2)
lock (lockObj1) // <- I expect some "possible deadlock" detection here
{
// some code
}
在這種情況下,我將使用lockObj1,然后在一個位置使用lockObj2,然后在另一位置以相反的順序使用它們,這是您在應用程序中要避免的事情,當然,在與示例中的其他情況類似,您的復雜應用程序可能具有多個相互影響的復雜對象
我已經將代碼和測試用例上傳到了這里https://github.com/glmnet/LockTracer
您可能要簽出CHESS 。
你看過紅門螞蟻嗎? 我不確定它是否可以滿足您的所有需求,但它是以下用途的好產品:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.