How to Listen-threads in WinDbg kernel debugging)
Weiß jemand, wie ich eine Liste aller threads in WinDbg beim kernel-debugging. Ich habe festgestellt, ältere Referenzen, die sagen,'~', aber das funktioniert nicht.
Speziell bin ich auf der Suche, um das finden der ID des thread, verursacht ein Ereignis, nämlich ein Haltepunkt.
Dank.
InformationsquelleAutor user963228 | 2011-12-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
~
funktioniert nur im Benutzer-Modus. Um eine Liste aller threads, die auf das system, es ist!process 0 1
soweit ich mich erinnere (es ist schon eine Weile).Diese Aussage macht nicht viel Sinn, zu tun, im kernel-Modus. Können Sie descrive mehr über das, was Ihr Szenario ist?
Edit: Ah, jetzt verstehe ich es. Sie wollen wissen, in welchem thread du bist momentan im jetzt. Geben
!thread
gehen.Wie sind Sie mit der Einstellung der Haltepunkt? Sie sich nicht festlegen können oder abfangen Haltepunkte auf user-mode-code standardmäßig während eines kernel-debugger.
Ich meine NtLoadDriver in ntoskrnl, so dass der thread schon in der Ausführung in den supervisor-Modus (ring-0). Mit debug-Symbolen, die ich gerade Typ kd> bp NtLoadDriver
und es bricht wie erwartet, in Ordnung, wenn ich erwarte es auch. Ich bin nur auf der Suche nach einer Möglichkeit zum abrufen der ID des Threads, ist die Ausnahme.
Für die Aufzeichnung, so sollte es sein !Prozess 0 2 um zu zeigen, threads für jeden Prozess. Wenn Sie wollen auch einen stack-trace, die Sie verwenden können !Prozess 0 6. Dies wird sehr ausführlich, obwohl, so würde ich empfehlen, mit einem besonderen Prozess zu betrachten, statt mit 0.
InformationsquelleAutor Paul Betts
Können Sie immer verwenden Sie die @$thread-pseudo-register verweisen auf das aktuelle thread-Objekt:
Wenn Sie wollen, dass die ID des Threads, die Sie benötigen, um zu Graben es aus der ETHREAD. Zum Glück, die @$thread eingegeben wird als ein Zeiger auf eine ETHREAD wenn Sie mit der C++ - evaluator:
-scott
InformationsquelleAutor snoone