pthdb_pthread_context oder pthdb_pthread_setcontext Subroutine
Zweck
Bietet Zugriff auf den pthread-Kontext über die Struktur struct context64 .
Bibliothek
pthread-Debugbibliothek (libpthdebug.a)
Syntax
Beschreibung
Die pthread-Debugbibliothek ermöglicht den Zugriff auf den pthread-Kontext über die Struktur struct context64 , unabhängig davon, ob es sich um einen 32 -Bit-oder 64-Bit-Prozess handelt. Der Debugger sollte in der Lage sein, von 32-Bit auf 64-Bit und von 64-Bit für 32-Bit-Prozesse zu konvertieren. Inwieweit diese Struktur gefüllt wird, hängt vom Vorhandensein der Sitzungsflags PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRSund PTHDB_FLAG_FPRS ab. Sie müssen die pthread-Debugbibliothek verwenden, um auf den Kontext eines pthread ohne Kernel-Thread zuzugreifen. Die pthread-Debugbibliothek kann auch verwendet werden, um auf den Kontext eines pthread mit einem Kernel-Thread zuzugreifen, aber dies führt zu einem Rückruf an den Debugger, was bedeutet, dass der Debugger diese Informationen selbst abrufen kann. Der Debugger stellt fest, ob der Kernel-Thread im Benutzer-oder Kernelmodus ausgeführt wird, und füllt dann die -Struktur context64 entsprechend aus. Die pthread-Debugbibliothek verwendet diese Informationen nicht selbst und ist daher nicht sensibel für die korrekte Implementierung der Rückruffunktionen read_regs und write_regs .
pthdb_pthread_context meldet den Kontext des pthread basierend auf den Einstellungen der Sitzungsflags. Verwendet den Rückruf read_regs , wenn der pthread einen Kernel-Thread hat. Wenn read_regs nicht definiert ist, wird PTHDB_NOTSUPzurückgegeben.
pthdb_pthread_setcontext legt den Kontext des pthread basierend auf den Einstellungen der Sitzungsflags fest. Verwendet den Rückruf write_data , wenn der pthread keinen Kernel-Thread hat Verwenden Sie den Rückruf write_regs , wenn der pthread einen Kernel-Thread hat.
Wenn der Debugger die Rückrufe read_regs und write_regs nicht definiert und der pthread keinen Kernel-Thread hat, werden die Funktionen pthdb_pthread_context und pthdb_pthread_setcontext erfolgreich ausgeführt. Wenn ein pthread jedoch keinen Kernel-Thread hat, schlagen diese Funktionen fehl und geben PTHDB_CONTEXTzurück.
Parameter
| Element | Beschreibung |
|---|---|
| Sitzung | Sitzungskennung. |
| pthread | pthread-Handle. |
| Kontext | Kontextpufferzeiger. |
Rückgabewerte
Bei Erfolg geben diese Funktionen PTHDB_SUCCESSzurück. Andernfalls wird ein Fehlercode zurückgegeben.
Fehlercodes
| Element | Beschreibung |
|---|---|
| PTHDB_BAD_SITZUNG | Ungültige Sitzungskennung. |
| PTHDB_BAD_PTHREAD | Ungültige pthread-Kennung |
| PTHDB_BAD_POINTER | Ungültiger Pufferzeiger. |
| PTHDB_CALLBACK | Callback-Funktion fehlgeschlagen. |
| PTHDB_KONTEXT | Der pthread-Kontext konnte nicht bestimmt werden. |
| PTHDB_SPEICHER | Nicht genügend Speicher |
| PTHDB_NOTSUP | pthdb_pthread_ (set) context gibt PTHDB_NOTSUP zurück, wenn die Rückrufe read_regs, write_data oder write_regs auf NULL gesetzt sind. |
| PTHDB_INTERNAL | Fehler in Bibliothek. |