Sdílet prostřednictvím


Připojit k programu

Po registraci programů s příslušným portem musíte ladicí program připojit k programu, který chcete ladit.

Volba způsobu připojení

Existují tři způsoby, jak se správce ladění relace (SDM) pokusí připojit k laděnému programu.

  1. Pro programy, které spouští ladicí modul prostřednictvím LaunchSuspended metoda (typické pro interpretované jazyky, například), SDM získá IDebugProgramNodeAttach2 rozhraní z IDebugProgramNode2 objektu přidruženého k programu, ke kterému je připojen. Pokud SDM může získat IDebugProgramNodeAttach2 rozhraní, SDM pak zavolá OnAttach metoda. Metoda IDebugProgramNodeAttach2::OnAttach se vrátí S_OK k označení, že se nepřipojovala k programu a že lze provést další pokusy o připojení k programu.

  2. Pokud SDM může získat IDebugProgramEx2 rozhraní z programu, ke kterému je připojen, SDM volá Metodu Attach . Tento přístup je typický pro programy, které dodavatel portů spustil vzdáleně.

  3. Pokud program nelze připojit pomocí IDebugProgramNodeAttach2::OnAttach metod nebo IDebugProgramEx2::Attach metod, SDM načte ladicí modul (pokud ještě není načten) voláním CoCreateInstance funkce a pak zavolá metodu Attach . Tento přístup je typický pro programy spuštěné místně dodavatelem portu.

    Je také možné, aby vlastní dodavatel portů volal metodu IDebugEngine2::Attach v implementaci metody vlastního IDebugProgramEx2::Attach dodavatele portu. V tomto případě obvykle vlastní dodavatel portů spustí na vzdáleném počítači ladicí modul.

    Příloha se dosáhne, když správce ladění relace (SDM) volá metodu Attach .

    Pokud de spustíte ve stejném procesu jako aplikace, která se má ladit, musíte implementovat následující metody IDebugProgramNode2:

  1. Odešle objekt události IDebugEngineCreateEvent2 do SDM. Další informace najdete v tématu Odesílání událostí.

  2. Volání GetProgramId metoda na IDebugProgram2 objektu, který byl předán metoděIDebugEngine2::Attach.

    Vrátí hodnotu GUID , která se používá k identifikaci programu. Musí GUID být uložen v objektu, který představuje místní program de a musí být vrácen IDebugProgram2::GetProgramId při zavolání metody v IDebugProgram2 rozhraní.

    Poznámka:

    Pokud implementujete IDebugProgramNodeAttach2 rozhraní, program GUID se předá IDebugProgramNodeAttach2::OnAttach metodě. Používá se GUID pro program GUID vrácený metodou IDebugProgram2::GetProgramId .

  3. Odešlete objekt události IDebugProgramCreateEvent2, který upozorní SDM, že místní IDebugProgram2 objekt byl vytvořen pro reprezentaci programu de. Podrobnosti najdete v tématu Odesílání událostí.

    Poznámka:

    Nejedná se o stejný IDebugProgram2 objekt, který byl předán do IDebugEngine2::Attach metody. Dříve předaný IDebugProgram2 objekt je rozpoznán pouze portem a je samostatným objektem.