Frage

Gibt es ein Tool, dass Analysen .NET-Code und Funde Rennbedingungen?

Ich habe ein Stück Code, der eine öffentliche statische Eigenschaft hat, dass bekommt oder erstellt ein eigenes statisches Feld. Es hat auch eine öffentliche statische Methode, dass setzt dieses Feld auf null (... ja, ich weiß! ..)

Da es keine Schlösser um eine dieser Methoden sind, ist es eine sichere Wette, dass things'll in Zukunft schrecklich schief gehen. Ich brauche ein Tool, das rekursiv durch die Dinge werden, die eine dieser Methoden aufrufen und sehen, ob etwas auf einem anderen Thread erzeugt wurde.

Ich bin für ein Werkzeug suchen, oder vielleicht einen NDepend SQL-Skript (falls dies möglich ist).

War es hilfreich?

Lösung

Sie sind wahrscheinlich der Suche nach einer der folgenden:


Hinweis : Diese Antwort ist aus dem Jahr 2010. Wie bei allen Empfehlungen Antworten neigen Empfehlungen Zeit zu wechseln. Es können auch andere Produkte sein da draußen jetzt, CHESS, die ein Microsoft Research Labs Projekt war haben zu einem Endprodukt weiterentwickelt oder ganz gestrichen worden. Bitte nehmen Sie diese Antwort mit einem Körnchen Salz und führen neue Forschung, in die Produkte nun geeignet sind.

Andere Tipps

Jinx wird dies zur Laufzeit tun (nicht statisch ), aber es kann sich lohnen, ein Blick auf.

Sie können CHESS prüfen wollen.

Ich habe experimentiert, wie diejenigen leicht zu verfolgen. Ich habe gearbeitet, einige Deadlocks zu verfolgen, die speziell auf Szenarien, in denen viele verschiedene Lock-Anweisungen verwendet werden.

Mein Ziel ist es Deadlocks zu erkennen, bevor sie auftreten, zum Beispiel wenn Sie zwei Ressourcen haben, wissen Sie, Sie müssen sie immer in der gleichen Reihenfolge verwenden, sonst ein Deadlock könnte auftreten.

lock (lockObj1) 
lock (lockObj2) 
{ 
    // some code
} 

... irgendwo anders in der App ...

lock (lockObj2) 
lock (lockObj1) // <- I expect some "possible deadlock" detection here 
{ 
    // some code
} 

In diesem Fall ist ich mit lockObj1 dann lockObj2 an einem Ort und in umgekehrter Reihenfolge an anderer Stelle verwendet wird, ist dies etwas, das Sie in einer Anwendung vermeiden mögen Natürlich Sperre Aussagen müssen nicht hintereinander verwendet werden, wie in dem Beispiel, Ihre komplexe Anwendung mehr komplexen Objekte miteinander

haben könnte die Interaktion

habe ich den Code mit den Testfällen hochgeladen hier https://github.com/glmnet/LockTracer

Sehen Sie die Antworten hier: Was statische Analyse-Tools für C # verfügbar sind ?

Einige statische Analyse-Tools können Deadlock-Erkennung tun.

Versuchen Sie auch, FxCop von Microsoft.

Haben Sie sich Red-Gate-Ameisen ? Ich bin mir nicht sicher, ob es wird alles tun, was Sie brauchen, aber es ist ein gutes Produkt zu:

  • Identifizieren von Performance-Engpässen innerhalb weniger Minuten
  • Optimieren .NET Anwendungsleistung
  • Drill-Down zu langsam Codezeilen mit Line-Level-Timings
  • Profil aspx, ASP.NET, C # -Code und VB.NET-Anwendungen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top