2012-05-18 10 views
9

Ich finde es schwierig, die Debug-Ausgabe von einem Kernel-Modus-Treiber zu sehen, an dem ich arbeite.Wie kann ich die DbgPrint-Ausgabe meines Kernel-Modus-Treibers sehen?

Ich bin neu in der Treiberentwicklung. Ich versuche einen USB-Treiber unter Windows XP zu debuggen. Ich habe das DDK installiert und einen "Checked Mode" Build meines Treibers erstellt. Ich habe den Treiber installiert und wenn ich einen Hex-Editor verwende, um die .sys-Datei meines Treibers in Windows/Treibern zu sehen, kann ich den Text meiner Debug-Ausgabe-Strings sehen.

Wenn ich eine Anwendung ausführen, die meinen Treiber unter Visual Studio verwendet, wird meine Debug-Ausgabe nicht im Ausgabefenster angezeigt, wie die eigene Debug-Ausgabe der Anwendung tut. Wenn ich das Web suche, finde ich viele verschiedene Behauptungen darüber, wie man Debug-Ausgaben vom Kernel anzeigen soll. Für Kernel-Debugging im Allgemeinen scheinen die Leute entweder Remote-Debugging über ein NULL-Modem-Kabel (Crikey, es ist 2012) oder verwenden Sie eine virtuelle Maschine und einen virtuellen COM-Port. Beide Ansätze scheinen eine enorme Menge an Arbeit zu sein, nur um die Debug-Ausgabe sehen zu können. Gibt es eine Alternative?

Ich habe versucht, WinDbg im "lokalen" Kernel-Debugging-Modus, aber es zeigt nichts. Es warnte, dass ich Windows mit "/ debug" neu starten sollte. Ich habe das gemacht, aber es hat nicht geholfen.

Irgendwelche anderen Ideen? Oder bitte ich um das Unmögliche?

Antwort

10

Debugview finden Sie die Trace-Nachrichten von Ihrem Fahrer zeigen:

http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

aber Sie wirklich eine zwei-Maschine brauchen eingerichtet, um echte Entwicklungsarbeit zu leisten.

+0

Vielen Dank. Das hat funktioniert. Ich dachte, dass DbgView nur in der Lage war, den gleichen Debug-Stream zu zeigen wie Visual Studio im Ausgabefenster, aber das stimmt nicht. –

+0

Übrigens, es ist nicht nötig, Windows zu booten, wenn "/ debug" aktiviert ist, damit dies funktioniert. –

1

Die von Ihnen gefundenen Informationen sind korrekt. Sie benötigen 2 Computer, um Kernel-Modus-Treiber zu debuggen.

Wenn Sie 2 physische Maschinen verwenden, können diese über USB angeschlossen werden. NULL-Modem (COM-Port) ist eine gängige Methode zum Anhängen von Debugger an eine virtuelle Maschine, bei der der COM-Port der VM als Named Pipe auf dem Host betrachtet wird. Daher benötigen Sie kein NULL-Modemkabel.

paar Links

http://msdn.microsoft.com/en-us/library/ff538141.aspx

http://msdn.microsoft.com/en-us/library/ff542279.aspx

+2

Vielen Dank, dass Sie sich die Zeit genommen haben, meine Frage zu beantworten. Ich denke deine Antwort ist ein bisschen irreführend, weil ich ohne 2 Maschinen tun kann, was ich will. Ich stimme jedoch zu, dass 2 Maschinen benötigt werden, wenn Sie ein komplettes Debugging mit Breakpoints etc. durchführen wollen. –