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