Partager via


Objectifs

Le moteur de débogueur prend en charge le débogage de différents types de cibles, de cibles en mode utilisateur et de cibles en mode noyau , de cibles actives et de fichiers de vidage sur incident, ainsi que de cibles locales et distantes. Il existe différentes méthodes pour connecter le moteur à ces différents types de cibles.

Fichiers de vidage de mémoire en cas d'incident

Les fichiers d'exportation de mémoire en mode utilisateur et en mode noyau sont ouverts avec OpenDumpFile. Le moteur peut également créer des fichiers de vidage à partir d’une cible avec WriteDumpFile2.

Cibles en direct, User-Mode

Le moteur de débogueur peut à la fois créer et s'attacher à des processus en mode utilisateur.

La création d’un processus est effectuée en fournissant une ligne de commande, et éventuellement un répertoire initial et un environnement, pour le nouveau processus. Le moteur peut ensuite se connecter au nouveau processus ou conserver le nouveau processus suspendu pendant qu’il se connecte à un autre processus. Par exemple, lors du débogage d’une application qui se compose à la fois d’un client et d’un serveur, il est possible de créer un client dans un état suspendu et de l’attacher à un serveur déjà en cours d’exécution, ce qui permet aux points d’arrêt du serveur d’être définis avant l’exécution du client et provoque des opérations serveur.

Lorsque vous vous détachez d’un processus, le moteur peut éventuellement continuer à exécuter le processus normalement, terminer le processus, ou l'abandonner (en le laissant suspendu jusqu’à ce qu’un autre débogueur s’y attache ou qu’il soit terminé).

Le moteur peut être interrogé pour obtenir des informations sur tous les processus en mode utilisateur qui s’exécutent sur l’ordinateur, y compris l’ID de processus et le nom de l’image exécutable utilisée pour démarrer le processus. Cette information peut être utilisée pour aider à localiser un processus à déboguer.

Cibles en direct, Kernel-Mode

La méthode AttachKernel connecte le moteur du débogueur à un noyau Windows.

Cibles distantes

Lorsque vous utilisez le moteur de débogueur pour déboguer à distance, il existe potentiellement deux étapes supplémentaires :

  1. Connectez-vous au moteur hôte. Si le moteur hôte n’est pas l’instance du moteur local, utilisez DebugConnect pour créer un objet client connecté au moteur hôte.

  2. Connectez le moteur hôte au serveur de traitement ou au serveur de connexion du noyau. Si le moteur hôte ne se connecte pas directement à la cible, il doit se connecter à un serveur de processus ou à un serveur de connexion noyau qui le fait.

À présent, le client peut indiquer au moteur hôte d’acquérir une cible via le serveur de processus ou le serveur de connexion du noyau.

Acquisition de cibles

Lors de l’acquisition d’une cible, l’acquisition de la cible n’est pas terminée tant que la cible ne génère pas d’événement. En règle générale, cela signifie d’abord appeler une méthode pour attacher le débogueur à la cible, puis appeler WaitForEvent pour permettre à la cible de générer un événement. Cela est toujours vrai lorsque la cible est un fichier de vidage sur incident, car il stocke toujours un événement, généralement l’événement qui a provoqué la création du fichier de vidage.

informations supplémentaires

Pour plus d’informations sur l’attachement à des cibles, consultez Connexion aux cibles.