Threads und Prozesse

Terminologie

Thread- und Prozesskonzepte unterscheiden sich zwischen Benutzermodusdebuggen und Kernelmodusdebuggen.

  • Beim Debuggen im Benutzermodus ist ein Prozess ein Betriebssystemprozess und ein Thread ein Betriebssystemthread.

  • Beim Debuggen im Kernelmodus erstellt die Debugger-Engine einen virtuellen Prozess für jedes Ziel. Dieser Prozess stellt den Kernel dar und entspricht keinem Betriebssystemprozess. Für jeden physischen Prozessor auf dem Zielcomputer erstellt der Debugger einen virtuellen Thread. Diese Threads stellen die Prozessoren dar und entsprechen keinem Betriebssystemthread.

Wenn ein Ereignis auftritt, legt die Engine den Ereignisprozess und den Ereignisthread auf den Prozess und den Thread (Betriebssystem oder virtuell) fest, in dem das Ereignis aufgetreten ist.

Der aktuelle Thread ist der Thread (Betriebssystem oder virtuell), den die Engine derzeit steuert. Der aktuelle Prozess ist der Prozess (Betriebssystem oder virtuell), den die Engine derzeit steuert. Wenn ein Ereignis auftritt, werden der aktuelle Thread und der aktuelle Prozess zunächst auf den Ereignisthread und -prozess festgelegt. sie können jedoch mithilfe der Clients geändert werden, während auf die Sitzung zugegriffen werden kann.

Im Kernelmodus verfolgt der Debugger einen impliziten Prozess und impliziten Thread nach. Der implizite Prozess ist der Betriebssystemprozess, der die Übersetzung von virtuellen in physische Speicheradressen bestimmt.

Der implizite Thread ist der Betriebssystemthread, der die Register des Ziels bestimmt, einschließlich Aufrufstapel, Stapelrahmen und Anweisungsoffset.

Wenn ein Ereignis auftritt, werden der implizite Thread und der implizite Prozess zunächst auf den Ereignisthread und -prozess festgelegt. Sie können geändert werden, solange auf die Sitzung zugegriffen werden kann.

Thread- und Prozessdaten

Die Engine verwaltet mehrere Informationen zu jedem Thread und Prozess. Dies umfasst den Systemthread, die Prozess-ID und die Systemhandles sowie die Prozessumgebung (PEB), den Threadumgebungsblock (TEB) und deren Speicherorte im Speicher des Ziels.

Weitere Informationen

Ausführliche Informationen zur Verwendung von Threads und Prozessen finden Sie unter Steuern von Threads und Prozessen.