2013-05-28 8 views
7

Ich bin immer noch ein relativer Neuling mit C++, und ich habe ein Problem mit der DLL von Drittanbietern, dass ich statisch zu meiner nativen C++ DLL verlinken. Ich verwende Visual Studio 2012, um meine DLL zu debuggen.Was kann WinDbg mir sagen, dass Visual Studio nicht kann?

(FWIW, die Drittanbieter-DLL ist Sybase Open Client, und ich bin Debuggen meine DLL über eine C# ausführbare ich geschrieben habe, die dynamisch meine C++ DLL lädt.)

Ich habe verwendet Visuelle Studio, um in die Disassembly einzusteigen und die Register und die Speichernutzung für die DLL des Drittanbieters zu betrachten. Visual Studio hat mir eine Menge guter Informationen darüber gegeben, was in meinem Prozess vor sich geht, aber ich habe das Gefühl, dass es dort mehr geben kann als das, was ich sehe, und vielleicht einen einfacheren oder effizienteren Weg, um dorthin zu gelangen.

Ich habe gelesen, dass WinDbg ein sehr leistungsfähiges Werkzeug ist, aber dass es viel Zeit und Mühe braucht, um es gut zu benutzen. Meine Frage ist: Ist es die Mühe wert zu lernen, WinDbg zu verwenden, oder werden die Debugging-Tools in Visual Studio mir ziemlich genau die gleichen Informationen geben?

+6

Versuchen Sie einmal, die Windows-Heaps im Visual Studio-Debugger zu gehen. Dann gelingt es tatsächlich * mit WinDbg. – WhozCraig

+1

WinDbg Skript als obskur wie seine Syntax ist kann im Vergleich zu dem, was VS erlaubt, mächtig sein, obwohl vielleicht mit einem Add-In oder Makro können Sie ähnliche Funktionalität in VS erhalten. – 0xC0000022L

+5

Speicherlecksuche, automatische Crash-Analyse, Leckverfolgung, Speichersuche, Möglichkeit, Aufruf-Stacks aller Threads einfach abzulegen, Breakpoints setzen/aufheben, wenn Breakpoints getroffen werden, Debugging auf Rechnern, auf denen VS nicht installiert ist, .net debugging, Protokollieren, skriptfähig, unterstützt Schleifen .. etc .. Grundsätzlich, was Sie erhalten, ist ein leichtes, kein BS-Debugger, Tonnen von Tools, die schmerzhafte Aufgaben zu automatisieren, die entweder schwierig oder unmöglich mit VS sind, die höchste Bestätigung, die Sie sehen, ist, dass MS verwenden dies zu debuggen Windows, steile Lernkurve, aber letztlich sehr lohnend – EdChum

Antwort

3

Meine Frage ist: ist es die Mühe wert zu lernen WinDbg zu verwenden, oder wird die Debugging-Tools in Visual Studio geben Sie mir so ziemlich die gleichen Informationen ?

Das hängt wirklich davon ab, welche Art von Programmierung Sie tun.

Mit WinDBG können Sie interne Strukturen des Betriebssystems anzeigen. Es ermöglicht Ihnen, Threads und Prozesse im gesamten System zu betrachten und Code zu debuggen, der im Betriebssystemkernel selbst ausgeführt wird (z. B. Treiber). Es gibt eine beträchtliche Fähigkeit, Skripte zu schreiben, um bestimmte Informationen auszugraben, oder, ich glaube, sogar Plugins zu schreiben, die innerhalb von WinDBG laufen, um bestimmte Aufgaben auszuführen.

Die meisten davon sind entweder schwierig oder unmöglich mit einem VS-Debugger.

Es ist fast unmöglich für mich oder irgendjemanden hier, Ihnen zu sagen, ob Sie lernen sollten, WinDBG zu verwenden. Es wird dir sicherlich nichts schaden, es zu wissen, aber es ist durchaus möglich, eine lange Zeit in deinem Leben zu verbringen, ohne es zu brauchen.

Verwandte Themen