Sdílet prostřednictvím


Připojení po spuštění

Po spuštění programu je ladicí relace připravena k připojení ladicího modulu (DE) k uvedeného programu.

Rozhodnutí o návrhu

Vzhledem k tomu, že komunikace je v rámci sdíleného adresního prostoru jednodušší, musíte si vybrat mezi dvěma přístupy návrhu: nastavit komunikaci mezi ladicí relací a de. Nebo nastavte komunikaci mezi de a programem. Vyberte si z následujících možností:

  • Pokud dává smysl nastavit komunikaci mezi ladicí relací a de, ladicí relace spoluvytváří DE a požádá de o připojení k programu. Tento návrh ponechá ladicí relaci a de dohromady v jednom adresního prostoru a prostředí za běhu a program společně v jiném.

  • Pokud dává smysl nastavit komunikaci mezi de a programem, prostředí za běhu spoluvytváří de. Tento návrh ponechá SDM v jednom adresního prostoru a de, prostředí za běhu a program společně v jiném. Tento návrh je typický pro de implementovaný s interpretem pro spouštění skriptovaných jazyků.

    Poznámka:

    Způsob připojení DE k programu je závislý na implementaci. Komunikace mezi DE a programem je také závislá na implementaci.

Implementace

Programově, když správce ladění relace (SDM) nejprve obdrží IDebugProgram2 objekt, který představuje program, který má být spuštěn, volá Metodu Attach , předává IDebugEventCallback2 objektu, který se později používá k předání ladicí události zpět do SDM. Metoda IDebugProgram2::Attach pak volá OnAttach metoda. Další informace o tom, jak SDM přijímá IDebugProgram2 rozhraní, najdete v tématu Oznámení portu.

Pokud se váš de musí spustit ve stejném adresní prostoru jako program, který ladíte: protože de je obvykle součástí interpretu, který spouští skript, IDebugProgramNodeAttach2::OnAttach vrátí S_FALSEmetoda . Vrácená S_FALSE hodnota označuje, že dokončil proces připojení.

Pokud se však de spustí v adresní prostor SDM: IDebugProgramNodeAttach2::OnAttach metoda vrátí S_OK, nebo IDebugProgramNodeAttach2 rozhraní není implementováno vůbec v objektu IDebugProgramNode2 přidružené k programu, který ladíte. V tomto případě je metoda Attach nakonec volána k dokončení operace připojení.

V druhém případě je nutné volat GetProgramId metoda u IDebugProgram2 objektu, který byl předán IDebugEngine2::Attach metodě, uložit GUID v místním programu objektu a vrátit to GUID , když IDebugProgram2::GetProgramId je metoda následně volána na tomto objektu. Slouží GUID k jednoznačné identifikaci programu napříč různými komponentami ladění.

V případě IDebugProgramNodeAttach2::OnAttach vrácení metody se GUID tato metoda předá použití pro program a je IDebugProgramNodeAttach2::OnAttach to metoda, která nastavuje objekt GUID místního S_FALSEprogramu.

De je nyní připojen k programu a připraven k odeslání všech událostí spuštění.