Retour
DebugActiveProcess (new for Win32)
BOOL DebugActiveProcess(idProcess)
DWORD idProcess; /* process qui doit être debuggé */
La fonction DebugActiveProcess permet à un debugger de s'attacher à un process déjà en cours et
de le débugger.
Paramètre Description
idProcess Represente le n°ID du process qui doit être débuggé. Le débugger obtient
l'accès à ce process (pour le débugger) comme s'il avait lui même créé ce
processus et qu'il avait en plus utilisé le Flag de création
DEBUG_ONLY_THIS_PROCESS.
Retours
La valeur de retour est TRUE si la fonction est couronnée de succès, ou FALSE si une erreur
s'est produite. Employez la fonction GetLastError pour obtenir l'information à propos de
l'erreur étendue.
Commentaires
Le débugger doit avoir un accès approprié au process cible - il doit être capable d'ouvrir le
process en ayant le Flag PROCESS_ALL_ACCESS (lequel permet toutes les manipulations sur les
registres de la cible). Pour Dos/Win32 c'est toujours vrai si le n°ID du process est un n°ID
valide. Pour NT/WIN32 cette fonction peut échouer si le process cible a été créé avec un
descripteur de sécurité lequel refuse au débugger l'accès approprié.
Une fois que le système a vérifié le n°ID du process et décide qu'un attachement valable est
fait, cette fonction retourne la valeur TRUE. On s'attend alors à ce que le débugger attende
patiemment des 'debugging événements' en employant la fonction WaitForDebugEvent. Le système
suspendra tous les liens du process cible et enverra ces événements en tant que représentation
de l'état actuel du process cible.
Le système enverra au debugger CREATE_PROCESS_DEBUG_EVENT lequel sert à informer que le process
(idProcess) est bien créé et qu'on peut agir sur lui.
Le membre lpStartAddress de la structure CREATE_PROCESS_DEBUG_INFO est NULL.
Pour chaque lien faisant actuellement parti du process cible, le système enverra un
CREATE_THREAD_DEBUG_EVENT au débugger.
Le membre lpStartAddress de la structure CREATE_THREAD_DEBUG_INFO est NULL lui aussi.
Pour chaque DLL actuellement chargé dans l'espace d'adresse du process cible, le système
enverra un LOAD_DLL_DEBUG_EVENTau débugger. Le système prendra des dispositions particulières
pour le premier lien du process pour exécuter une instruction de point de contrôle après qu'il
soit repris. La reprise de ce lien fait en sorte que ce lien primaire retourne à ce qu'il
faisait avant que le débugger ne s'y soit attaché.
Après que tout ça ait été fait, le système reprend tous les liens du process cible. Quand le
premier lien du process reprend, il exécute une instruction de point de contrôle qui provoque
un EXCEPTION_DEBUG_EVENT lequel est envoyé au débugger. Tous les 'debugging événements'
futurs seront envoyés au débugger en employant le mécanisme normal et les règles.
Voir Aussi
CreateProcess, WaitForDebugEvent
Retour