IDebugEngine2::CreatePendingBreakpoint
Crée un point d’arrêt en attente dans le moteur de débogage (DE).
Syntaxe
int CreatePendingBreakpoint(
IDebugBreakpointRequest2 pBPRequest,
out IDebugPendingBreakpoint2 ppPendingBP
);
Paramètres
pBPRequest
[in] Objet IDebugBreakpointRequest2 qui décrit le point d’arrêt en attente à créer.
ppPendingBP
[out] Renvoie un objet IDebugPendingBreakpoint2 qui représente le point d’arrêt en attente.
Valeur de retour
En cas de réussite, retourne S_OK
, sinon, retourne un code d'erreur. Retourne E_FAIL
généralement si le pBPRequest
paramètre ne correspond à aucune langue prise en charge par le DE si le pBPRequest
paramètre n’est pas valide ou incomplet.
Notes
Un point d’arrêt en attente est essentiellement une collection de toutes les informations nécessaires pour lier un point d’arrêt au code. Le point d’arrêt en attente retourné par cette méthode n’est pas lié au code tant que la méthode Bind n’est pas appelée.
Pour chaque point d’arrêt en attente défini par l’utilisateur, le gestionnaire de débogage de session appelle cette méthode dans chaque DE attaché. Il incombe au DE de vérifier que le point d’arrêt est valide pour les programmes s’exécutant dans ce DE.
Lorsque l’utilisateur définit un point d’arrêt sur une ligne de code, le DE est libre de lier le point d’arrêt à la ligne la plus proche du document qui correspond à ce code. Cela permet à l’utilisateur de définir un point d’arrêt sur la première ligne d’une instruction multiligne, mais de le lier sur la dernière ligne (où tout le code est attribué dans les informations de débogage).
Exemple
L’exemple suivant montre comment implémenter cette méthode pour un objet simple CProgram
. L’implémentation du IDebugEngine2::CreatePendingBreakpoint
DE pourrait ensuite transférer tous les appels à cette implémentation de la méthode dans chaque programme.
HRESULT CProgram::CreatePendingBreakpoint(IDebugBreakpointRequest2* pBPRequest, IDebugPendingBreakpoint2** ppPendingBP)
{
// Create and initialize the CPendingBreakpoint object.
CComObject<CPendingBreakpoint> *pPending;
CComObject<CPendingBreakpoint>::CreateInstance(&pPending);
pPending->Initialize(pBPRequest, m_pInterp, m_pCallback, m_pEngine);
return pPending->QueryInterface(ppPendingBP);
}