Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.