Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ingo Rammer ingo.rammer@thinktecture.com Production Debugging Ingo Rammer ingo.rammer@thinktecture.com.

Ähnliche Präsentationen


Präsentation zum Thema: "Ingo Rammer ingo.rammer@thinktecture.com Production Debugging Ingo Rammer ingo.rammer@thinktecture.com."—  Präsentation transkript:

1 Ingo Rammer ingo.rammer@thinktecture.com
Production Debugging Ingo Rammer

2 Ingo Rammer und Kleine Beratungsfirma für Softwareentwickler
Unterstützung, Coaching und Beratung für Software-Architekten und -Entwickler Architektur- und Code-Reviews Prototypentwicklung und Architekturberatung Coaching und Mentoring Anwendungsoptimierung und Troubleshooting

3 … oder „Wenn nix mehr geht, geht doch noch was“

4 Ziel dieser 75 Minuten Tools Techniken Links
Gewissheit: Sie können das Problem lösen!

5 Szenarien Applikationsfehler, die nicht ausreichend geloggt werden „Verschluckte“ Exceptions, die im Produktivbetrieb essentielle Infos vernichten Anwendungen, die sich „einfach so beenden“ Memory Leaks in grafischen Applikationen und in Server-Anwendungen … und kein Visual Studio weit und breit

6 Gemeinsamkeiten der Tools
XCOPY – am Server muss nichts installiert werden Kostenlos Debugger kommen von Microsoft, Rest ist optional

7 Nachfolger von cordbg (Common Object Runtime Debugger)
MDbg Managed Code Debugger Nachfolger von cordbg (Common Object Runtime Debugger) Zwei unterschiedliche Versionen! MDBG im SDK Supported „MDBG Sample“ als C# Quellcode IL Disassembler Grafische Oberfläche Unsupported

8 MDbg Kommandos ru > Run (Starte Anwendung) at > Attach (Laufenden Prozess debuggen) g > Go (Äquivalent von F5 in Visual Studio) lo > Load Module (z.B. “LO ILDASM”) ca ex -> Catch Exceptions w > Wo bin ich? (Stack Trace) t > Thread-Liste t <#> -> Thread auswählen (z.B. “t 3”) p > Print (Lokale Variable)

9 MDbg bei verschluckten Exceptions
Drag und Drop der EXE auf MDbg Alternativ: Start von Mdbg, dann Verwendung von Run oder Attach ca ex (Catch Exceptions) g (Go) Sobald die Exception auftritt: w (Stack Trace) g (Bei Bedarf: Go)

10 Low Level Debugger (auch Kernel Debugging)
WinDbg Low Level Debugger (auch Kernel Debugging) Kennt .NET nicht, sondern grundsätzlich nur unmanaged code Erweiterungsmodul SOS (Son Of Strike) erlaubt Zugriff auf interne .NET Datenstrukturen Relativ komplex, bietet aber wichtige Features: Memory Leak Analyse („alle existierenden Objekte“) Analyse von Memory Dumps Remote Debugging über TCP/IP (auch mit TCP Forwardern als Relay-Stationen)

11 WinDbg Grundlagen .loadby sos mscorlib > lade SOS aus dem Verzeichnis, aus dem mscorlib geladen wurde. Funktioniert erst, nachdem CLR im Zielprozess initialisiert wurde! G > go (F5) CTRL+BREAK -> Break ~ > Thread List ~#s -> Thread Auswahl (z.B. ~4s) !clrstack -> Stack Trace !help [cmd] -> Liste der SOS Funktionen .hh [cmd] -> Hilfe zu WinDbg Funktionen

12 WinDbg und Exceptions WinDbg geht standardmässig bei einigen unmanaged Exceptions (Access Violations) in den Break-Modus SXE <event> -> Break SXI <event> -> Ignorieren SXN <event> -> Output SXE clr -> Break bei allen CLR Exceptions Wichtig: NullReferenceException, DivideByZero sind keine CLR Exceptions, sondern „normale“ unmanaged Exceptions SXE av -> Break bei Access Violation (Null Ref, default) SXE dz -> Break bei Division durch Null (default)

13 WinDbg und Speicherleaks
WinDbg kennt .NET primär nicht und kann daher mehr sehen als ein .NET Debugger !dumpheap -> Alle geladenen Objekte !gcroot -> Garbage Collection Pfade zu den Objekten !do <adr> -> Dump Object !da <adr> -> Dump Array !dso -> Dump Stack Objects (nicht präzise) !dumpheap –stat !dumpheap –type <klassenName> !gcroot <objektAdresse> Interessant zusammen mit HawkEye zum Identifizieren der Klassennamen von GUI-Elementen .dump /ma c:\dumps\mydump.dmp -> Dump (/ma: mini dump mit “All” Option)

14 Memory Dump Analyse ADPlus (Auto Dump Plus)
Erzeugt Memory Dumps sofort oder bei Exceptions (allerdings nur unmanaged) Dumps sind im Allgemeinen zwischen 40 und 500 MB gross aber gut komprimierbar Dumps beinhalten den gesamten Prozessspeicher und mehr Zum Beispiel auch Rekonstruktion der geladenen DLLs und EXEs

15 ADPlus C:\> adplus –hang –p <PID>
C:\> adplus –hang –pn <ProzessName> C:\> adplus –crash –p <PID>

16 Global Flags Tool in den Debugging Tools für Windows
Erlaubt das sofortige Starten eines Debuggers bei Programmstart Bei Services: „Interact with Desktop“ muss aktiviert sein

17 DumpGen und SOS Assist SOS Assist: Grafisches Tools für WinDbg
DumpGen: Erzeugung von Dumps Beide Tools: Kostenlos. In ständiger Entwicklung. Aktuell: Sehr frühe Preview Version Download nur für Teilnehmer unserer Debugging-Kurse oder Vorträge. Verteilung im Unternehmen ist natürlich ok. URL:

18 Logging und LogViewer Alle API Zugriffe können von WinDbg geloggt werden Parameter und Rückgabewerte !load logexts -> Lade Logging Erweiterung !logm i * -> Inkludiere alle Module !loge c:\logs -> Starte Log in c:\logs (Enable) !logb f -> Flush des Log-Puffers !logd -> Log Beenden (Disable) Betrachtung mit LogViewer (ebenfalls Debugging Tools für Windows)

19 Downloads MDbg Sample WinDbg, CDB, GFlags Hawkeye
Google: „mdbg sample“ WinDbg, CDB, GFlags Google: „debugging tools for windows“ Hawkeye Google: hawkeye .net

20 In-depth support and consulting for software architects and developers
{ } In-depth support and consulting for software architects and developers


Herunterladen ppt "Ingo Rammer ingo.rammer@thinktecture.com Production Debugging Ingo Rammer ingo.rammer@thinktecture.com."

Ähnliche Präsentationen


Google-Anzeigen