pthdb_pthread_context ou pthdb_pthread_setcontext Sous-routine
Objectif
Permet d'accéder au contexte pthread via la structure struct context64 .
Bibliothèque
bibliothèque de débogage pthread (libpthdebug.a)
Syntaxe
Descriptif
La bibliothèque de débogage pthread permet d'accéder au contexte pthread via la structure struct context64 , que le processus soit 32 bits ou 64 bits. Le débogueur doit être capable de convertir de 32 bits en 64 bits et de 64 bits pour les processus 32 bits. La mesure dans laquelle cette structure est remplie dépend de la présence des indicateurs de session PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRSl et PTHDB_FLAG_FPRS . Il est nécessaire d'utiliser la bibliothèque de débogage pthread pour accéder au contexte d'une pthread sans unité d'exécution du noyau. La bibliothèque de débogage pthread peut également être utilisée pour accéder au contexte d'une pthread avec une unité d'exécution de noyau, mais cela se traduit par un rappel au débogueur, ce qui signifie que le débogueur est capable d'obtenir ces informations par lui-même. Le débogueur détermine si l'unité d'exécution du noyau s'exécute en mode utilisateur ou en mode noyau, puis remplit correctement le struct context64 . La bibliothèque de débogage pthread n'utilise pas elle-même ces informations et n'est donc pas sensible à l'implémentation correcte des fonctions de rappel read_regs et write_regs .
pthdb_pthread_context indique le contexte de pthread en fonction des paramètres des indicateurs de session. Utilise le rappel read_regs si pthread possède une unité d'exécution de noyau. Si read_regs n'est pas défini, il renvoie PTHDB_NOTSUP.
pthdb_pthread_setcontext définit le contexte de pthread en fonction des paramètres des indicateurs de session. Utilise le rappel write_data si pthread ne possède pas d'unité d'exécution de noyau. Utilisez le rappel write_regs si l'unité d'exécution pthread possède une unité d'exécution de noyau.
Si le débogueur ne définit pas les rappels read_regs et write_regs et si pthread ne possède pas d'unité d'exécution de noyau, les fonctions pthdb_pthread_context et pthdb_pthread_setcontext aboutissent. Mais si un pthread n'a pas d'unité d'exécution du noyau, ces fonctions échouent et renvoient PTHDB_CONTEXT.
Paramètres
| Article | Descriptif |
|---|---|
| session | Descripteur de session. |
| pthread | Descripteur pthread. |
| contexte | Pointeur de mémoire tampon de contexte. |
Valeurs renvoyées
En cas de réussite, ces fonctions renvoient PTHDB_SUCCESS. Sinon, un code d'erreur est renvoyé.
Codes d'erreur
| Article | Descriptif |
|---|---|
| PTHDB_BAD_SESSION | Descripteur de session non valide. |
| PTHDB_BAD_PTHREAD | Descripteur pthread non valide. |
| PTHDB_BAD_POINTER | Pointeur de mémoire tampon non valide. |
| PTHDB_CALLBACK | La fonction de rappel a échoué. |
| CONTEXT pour PTHDB_CONTEXT | Impossible de déterminer le contexte pthread. |
| MEMOIRE-PTHBD | Mémoire insuffisante |
| PTHDB_NOTSUP | pthdb_pthread_ (set) context renvoie PTHDB_NOTSUP si les appels read_regs, write_data ou write_regs sont définis sur NULL. |
| PTHDB_INTERNAL | Erreur dans la bibliothèque. |