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.
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. MetodaIDebugProgramNodeAttach2::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.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ě.
Pokud program nelze připojit pomocí
IDebugProgramNodeAttach2::OnAttach
metod neboIDebugProgramEx2::Attach
metod, SDM načte ladicí modul (pokud ještě není načten) volánímCoCreateInstance
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íhoIDebugProgramEx2::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:
-
IDebugEngine2::Attach
Po zavolání metody postupujte podle těchto kroků v implementaciIDebugEngine2::Attach
metody:
Odešle objekt události IDebugEngineCreateEvent2 do SDM. Další informace najdete v tématu Odesílání událostí.
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ácenIDebugProgram2::GetProgramId
při zavolání metody vIDebugProgram2
rozhraní.Poznámka:
Pokud implementujete
IDebugProgramNodeAttach2
rozhraní, programGUID
se předáIDebugProgramNodeAttach2::OnAttach
metodě. Používá seGUID
pro programGUID
vrácený metodouIDebugProgram2::GetProgramId
.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 doIDebugEngine2::Attach
metody. Dříve předanýIDebugProgram2
objekt je rozpoznán pouze portem a je samostatným objektem.