次の方法で共有


IDebugEngine2::CreatePendingBreakpoint

デバッグ エンジン (DE) に保留中のブレークポイントを作成します。

構文

int CreatePendingBreakpoint(
    IDebugBreakpointRequest2     pBPRequest,
    out IDebugPendingBreakpoint2 ppPendingBP
);

パラメーター

pBPRequest
[入力] 作成する保留中のブレークポイントを記述する IDebugBreakpointRequest2 オブジェクト。

ppPendingBP
[出力] 保留中のブレークポイントを表す IDebugPendingBreakpoint2 オブジェクトを返します。

戻り値

成功した場合は、S_OK を返します。それ以外の場合は、エラー コードを返します。 pBPRequest パラメーターが DE でサポートされているどの言語にも一致しない場合、または pBPRequest パラメーターが無効または不完全である場合、通常は E_FAIL を返します。

解説

保留中のブレークポイントは、基本的に、ブレークポイントをコードにバインドするために必要なすべての情報のコレクションです。 このメソッドから返された保留中のブレークポイントは、Bind メソッドが呼び出されるまでコードにバインドされません。

ユーザーが設定した保留中のブレークポイントごとに、セッション デバッグ マネージャー (SDM) は、アタッチされた各 DE 内でこのメソッドを呼び出します。 その DE で実行されているプログラムに対してブレークポイントが有効であることを確認するのは、DE の責任です。

ユーザーがコード行にブレークポイントを設定すると、DE は、このコードに対応するドキュメント内の最も近い行にブレークポイントを自由にバインドできます。 これにより、ユーザーは、複数行のステートメントの最初の行にブレークポイントを設定できますが、最後の行 (すべてのコードがデバッグ情報で属性化されている場所) にバインドできます。

次の例は、単純な CProgram オブジェクトに対してこのメソッドを実装する方法を示しています。 IDebugEngine2::CreatePendingBreakpoint の DE の実装では、各プログラムでこのメソッドの実装のすべての呼び出しを転送できます。

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

関連項目