Menedżer debugowania sesji
Menedżer debugowania sesji (SDM) zarządza dowolną liczbą aparatów debugowania (DE), które debugują dowolną liczbę programów w wielu procesach na dowolnej liczbie maszyn. Oprócz bycia multiplekserem aparatu debugowania sdM zapewnia ujednolicony widok sesji debugowania w środowisku IDE.
Operacja menedżera debugowania sesji
Menedżer debugowania sesji (SDM) zarządza de. Na maszynie może działać więcej niż jeden aparat debugowania. Aby multipleksować środowiska IDE, SDM opakowuje wiele interfejsów z kontrolerów sieci wirtualnych i uwidacznia je w środowisku IDE jako pojedynczy interfejs.
Aby zwiększyć wydajność, niektóre interfejsy nie są multipleksowane. Zamiast tego są one używane bezpośrednio z de i wywołania do tych interfejsów nie przechodzą przez SDM. Na przykład interfejsy używane z kontekstami pamięci, kodu i dokumentu nie są multipleksowane, ponieważ odwołują się do określonej instrukcji, pamięci lub dokumentu w określonym programie debugowanych przez określony de. Żaden inny DE nie musi być zaangażowany w ten poziom komunikacji.
Nie dotyczy to wszystkich kontekstów. Wywołania interfejsu kontekstu oceny wyrażeń przechodzą przez sdM. Podczas oceny wyrażeń sdM opakowuje interfejs IDebugExpression2, który daje środowisku IDE, ponieważ gdy to wyrażenie jest oceniane, może obejmować wiele kontrolerów danych debugujących programy w tym samym procesie, który może być uruchomiony w tym samym wątku.
SdM zazwyczaj działa jako mechanizm delegowania, ale może działać jako mechanizm emisji. Na przykład podczas obliczania wyrażenia sdM działa jako mechanizm emisji w celu powiadomienia wszystkich DEs, że mogą uruchamiać kod w określonym wątku. Podobnie, gdy SDM odbiera zdarzenie zatrzymania, emituje do programów, które powinny przestać działać. Po wywołaniu kroku program SDM emituje do programów, które mogą kontynuować. Punkty przerwania są również emitowane do każdej DE.
SdM nie śledzi bieżącego programu, wątku ani ramki stosu. Informacje o procesie, programie i wątku są wysyłane do sdM w połączeniu z określonymi zdarzeniami debugowania.