2008-12-07 8 views
0

J'essaye de faire un petit outil qui utilise le Debugger Engine API, mais j'ai un succès très limité.IDebugControl :: WaitForEvent fonctionne une fois puis retourne E_HANDLE

Je peux obtenir mes instances IDebugClient et IDebugControl, et à partir de là je peux joindre un processus utilisateur en cours d'exécution. J'entre alors dans une boucle principale où j'appelle WaitForEvent, OutputStackTrace, SetExecutionStatus (DEBUG_STATUS_GO), et répète. En substance, il s'agira d'un profileur basé sur l'échantillonnage très brut.

Bon jusqu'à présent ..

Ma boucle fonctionne pour une itération complète, je peux voir une trace de pile affiché et le processus cible retourne dans un état de fonctionnement.

Le problème que j'ai est que sur ma 2ème itération l'appel à WaitForEvent renvoie E_HANDLE ("Le handle est invalide"). Je ne peux pas voir dans la documentation pourquoi cette erreur doit être renvoyée. Est-ce que quelqu'un sait pourquoi cela pourrait se produire?

Répondre

0

Le problème s'est avéré être que je compilais, reliait et exécutais contre une ancienne version du SDK. Maintenant que j'ai mis à jour mon SDK vers la dernière version (ce que je suppose être la version à laquelle les docs en ligne font référence), j'obtiens un comportement qui est au moins compatible avec les docs.

J'ai encore des problèmes, mais plus ce problème.