Einträge tagged ‘Debugging

03
Okt
07

WinDbg-Erweiterung für verwalteten Code: SOSEX

Neue Debugger-Befehle in dieser Erweiterung sind:
!dumpgen and !gcgen
Herausfinden, welche Objekte sich in welcher Generation der GarbageCollection befinden (z.B. !dumpgen 2 zeigt eine Liste der Objekte an, die sich in GC-Generation 2 befinden)

!refs
Zeigt alle Referenzen auf ein bestimmtes Objekt

!dlk
DeadLock detection – zur Erkennung von DeadLocks (sich behindernde Threads)

!bpsc and !bpmo
bpsc (BreakPoint Source) erlaubt das nachträgliche Setzen von Source-Breakpoints im Code an einer bestimmten Code-Zeile

!vars and !isf
Wenn an einem Breakpoint angehalten wurde, so kann mithilfe von !vars die lokalen Variablen angeschaut werden.

Mehr Infos zu den Erweiterungen gibts im Blog von Steve Johnson:
http://www.stevestechspot.com/SOSEXANewDebuggingExtensionForManagedCode.aspx

und im Blog von John Robbins:
http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/06/19/great-sosex-a-phenomenal-net-debugging-extension-to-see-the-hard-stuff-steve-johnson-is-my-hero.aspx

Download x86-Edition: http://www.stevestechspot.com/downloads/sosex_32.zip
Download x64-Edition: http://www.stevestechspot.com/downloads/sosex_64.zip

30
Sep
07

Debuggen von Problemen beim Laden von Assemblies

Ich entwickle beruflich u.a. Assemblies mit C++/CLI, die eine Interop-Brücke zwischen den vorhandenen C++-Bibliotheken und unseren .NET-Anwendungen (in C#) darstellen. Hin und wieder (beispielsweise wenn sich eine native C++-DLL geändert hat), bekomme ich Loader Exceptions in Form von System.IO.FileNotFoundException.

Bisher habe ich mir immer Hilfe bei dem Assembly Binding Log Viewer geholt, der mich angezeigt hat, welche Assemblies Probleme machen. Der Assembly Binding Fusion Log Viewer liegt üblicherweise im SDK-Ordner vom .NET Framework (in meinem Fall C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin) und heißt FUSLOGVW.exe.

Assembly Binding Log Viewer

Danach habe ich mir die Assemblies angeschaut, die Probleme machen und habe somit schnell die fehlenden Abhängigkeiten gefunden.

Weiter Tipps in dieser Richtung habe ich im Blog von Suzsanne Cook gefunden, wie man Probleme beim Laden von Assemblies in den Griff bekommt:

http://blogs.msdn.com/suzcook/archive/2003/05/29/57120.aspx