Udostępnij przez


Podłącz 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: skonfigurować komunikację między sesją debugowania a DE (środowisko programistyczne). Lub ustaw 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ólnie tworzy DE i prosi DE o przyłączenie się do programu. Ten projekt pozostawia sesję debugowania i środowisko debugowania razem w jednej przestrzeni adresowej, a środowisko uruchomieniowe oraz program wspólnie w innej.

  • Jeśli bardziej sensowne jest ustawienie komunikacji między DE a programem, środowisko uruchomieniowe współtworzy DE. Ten projekt pozostawia SDM w jednej przestrzeni adresowej, a DE, środowisko uruchomieniowe i program razem w innej. Ten projekt jest typowy dla środowiska wykonawczego, które zostało zaimplementowane za pomocą interpretera do uruchamiania języków skryptowych.

    Uwaga / Notatka

    Sposób przyłączania DE do programu jest zależny od implementacji. Komunikacja między DE a programem jest również zależna od implementacji.

Implementation

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, w jaki program SDM odbiera interfejs IDebugProgram2, przeczytaj 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, który debugujesz. 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 IDebugProgramNodeAttach2::OnAttach zwracającej S_FALSE, GUID do użycia dla programu jest przekazywany do tej metody, a następnie metoda IDebugProgramNodeAttach2::OnAttach ustawia GUID na lokalnym obiekcie programu.

DE jest teraz podpięty do programu i gotowy do wysyłania wszelkich zdarzeń startowych.