Partager via


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);
}

Voir aussi