Dołączanie po uruchomieniu
Po uruchomieniu programu sesja debugowania jest gotowa do dołączenia aparatu debugowania (DE) do tego programu.
Decyzje projektowe
Ponieważ komunikacja jest łatwiejsza w udostępnionej przestrzeni adresowej, należy wybrać między dwoma podejściami projektowymi: ustawić komunikację między sesją debugowania a de. Możesz też ustawić komunikację między de i programem. Wybierz między następującymi elementami:
Jeśli bardziej sensowne jest skonfigurowanie komunikacji między sesją debugowania a de, sesja debugowania współtworzy de i prosi DE o dołączenie do programu. Ten projekt pozostawia sesję debugowania i de razem w jednej przestrzeni adresowej, a środowisko i program czasu wykonywania razem w innym.
Jeśli bardziej sensowne jest skonfigurowanie komunikacji między de i programem, środowisko czasu wykonywania współtworzy de. Ten projekt pozostawia sdM w jednej przestrzeni adresowej i DE, środowisko uruchomieniowe i program razem w innym. Ten projekt jest typowy dla de, który jest implementowany z interpreterem do uruchamiania języków skryptowych.
Uwaga
Sposób dołączania de do programu jest zależny od implementacji. Komunikacja między DE a programem jest również zależna od implementacji.
Implementacja
Programowo, gdy menedżer debugowania sesji (SDM) najpierw odbiera obiekt IDebugProgram2 , który reprezentuje program do uruchomienia, wywołuje metodę Attach , przekazując jej obiekt IDebugEventCallback2 , który jest później używany do przekazywania zdarzeń debugowania z powrotem do SDM. Następnie IDebugProgram2::Attach
metoda wywołuje metodę OnAttach . Aby uzyskać więcej informacji na temat sposobu odebrania interfejsu przez IDebugProgram2
program SDM, zobacz Powiadamianie portu.
Jeśli de musi działać w tej samej przestrzeni adresowej co program, który debugujesz: ponieważ de jest zwykle częścią interpretera, który uruchamia skrypt, IDebugProgramNodeAttach2::OnAttach
metoda zwraca wartość S_FALSE
. Zwrot S_FALSE
wskazuje, że proces dołączania został ukończony.
Jeśli jednak de działa w przestrzeni adresowej SDM: IDebugProgramNodeAttach2::OnAttach
metoda zwraca S_OK
wartość lub interfejs IDebugProgramNodeAttach2 nie jest w ogóle zaimplementowany w obiekcie IDebugProgramNode2 skojarzonym z programem debugowania. W takim przypadku metoda Attach zostanie ostatecznie wywołana, aby ukończyć operację dołączania.
W tym drugim przypadku należy wywołać metodę GetProgramId dla IDebugProgram2
obiektu, który został przekazany do IDebugEngine2::Attach
metody, zapisać GUID
obiekt w lokalnym obiekcie programu i zwrócić to GUID
, gdy IDebugProgram2::GetProgramId
metoda zostanie następnie wywołana dla tego obiektu. Element GUID
służy do identyfikowania programu unikatowo w różnych składnikach debugowania.
W przypadku metody zwracającej IDebugProgramNodeAttach2::OnAttach
S_FALSE
metodę , GUID
parametr do użycia dla programu jest przekazywany do tej metody i jest IDebugProgramNodeAttach2::OnAttach
to metoda ustawiana GUID
dla obiektu programu lokalnego.
De jest teraz dołączony do programu i gotowy do wysyłania wszelkich zdarzeń startowych.