C#/.純分析ツールを探レース条件/デッドロック
-
24-09-2019 - |
質問
あるツール解析した。純コードが異なるレース。
私は少しのコードは、public static物件を取得する生する民間のstaticフィールドに代入します。でも、公共のstaticメソッドを設定するこの分野にnull(...そうでしょ!..)
としてありませんロックの周り以下のいずれかのメソッドで安全なベットがいいに決違います。いが必要なツールをただ再帰的によるもの呼び以下のいずれかのメソッドの場合もった緻に別のスレッド.
私のツールやかnDepend SQLスクリプトの場合はこの可能)
解決
しょ探しているけど、なかなか見つのことが、この
注意:この答えは2010年.全ての勧告に答え、変化する傾向があります。ありその他の製品が現在、将棋あった株式会社東芝研究開発センター研究所プロジェクトが進化した最終製品または廃車されます。余裕を持ってください答え穀物の塩を行う新しい研究る製品に適します。
他のヒント
ジンクスのない静的(実行時にこれを行います)しかし、それは価値ます。
を見てすることができますあなたは CHESS をチェックアウトする場合があります。
私は簡単にそれらを追跡する方法について実験してきました。私は特別に多くの異なったロック文が使用されているシナリオに、いくつかのデッドロックを追跡するために取り組んできました。
私の目標は、例えば、彼らが起こる前に、デッドロックを検出することですあなたは2つのリソースを持っている場合、あなたは常に同じ順序でそれらを使用する必要があります知っている、それ以外の場合は、デッドロックがの発生する可能性があります。
lock (lockObj1)
lock (lockObj2)
{
// some code
}
...どこか他のアプリで...
lock (lockObj2)
lock (lockObj1) // <- I expect some "possible deadlock" detection here
{
// some code
}
この場合、私は1つの場所で、その後lockObj2をlockObj1を使用していますし、別の場所では逆の順序でそれらを使用して、これはあなたがアプリケーションに避けるために好きになるものです もちろん、ロックステートメントは一例では、あなたの複雑なアプリケーションが互いに
と対話するいくつかの複雑なオブジェクトを持っている可能性があるように次々に使用する必要はありません。私は、ここではテストケースとコードをアップロードしています https://github.com/glmnet/LockTracerする
ここでの回答を参照してください:静的解析ツールは、C#のために利用可能ですか?の
いくつかの静的解析ツールは、デッドロックの検出を行うことができます。
また、してみてください FxCopのマイクロソフトから。
てん 赤ゲートアリ?くなった場合でも必要なことは良い製品:
- 特定の性能ボトルネック分以内
- 最適化.NETアプリケーション性能
- ドリルダウンでゆっくりとコードのラインレベルタイミング
- プaspx,ASP.NET C#コードVB.NET 用途