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 zarejestrowaniu programów przy użyciu odpowiedniego portu należy dołączyć debuger do programu, który chcesz debugować.
Wybieranie sposobu dołączania
Istnieją trzy sposoby, na które menedżer debugowania sesji (SDM) próbuje dołączyć do debugowanego programu.
W przypadku programów uruchamianych przez aparat debugowania za pośrednictwem metody LaunchSuspended (typowej dla interpretowanych języków, na przykład), sdM uzyskuje interfejs IDebugProgramNodeAttach2 z obiektu IDebugProgramNode2 skojarzonego z dołączonym programem. Jeśli sdM może uzyskać
IDebugProgramNodeAttach2interfejs, SDM wywołuje metodę OnAttach . MetodaIDebugProgramNodeAttach2::OnAttachpowracaS_OK, aby wskazać, że nie dołączyła do programu i że inne próby można dołączyć do programu.Jeśli sdM może uzyskać interfejs IDebugProgramEx2 z dołączonego programu, SDM wywołuje metodę Attach . Takie podejście jest typowe w przypadku programów, które zostały uruchomione zdalnie przez dostawcę portów.
Jeśli program nie może być dołączony za pomocą
IDebugProgramNodeAttach2::OnAttachmetod lubIDebugProgramEx2::Attach, sdM ładuje aparat debugowania (jeśli jeszcze nie został załadowany), wywołującCoCreateInstancefunkcję, a następnie wywołuje metodę Attach . Takie podejście jest typowe dla programów uruchamianych lokalnie przez dostawcę portów.Istnieje również możliwość wywołania
IDebugEngine2::Attachmetody przez niestandardowego dostawcę portów w implementacji metody niestandardowego dostawcy portówIDebugProgramEx2::Attach. Zazwyczaj w tym przypadku niestandardowy dostawca portów uruchamia aparat debugowania na maszynie zdalnej.Załącznik jest osiągany, gdy menedżer debugowania sesji (SDM) wywołuje metodę Attach .
Jeśli uruchomisz de w tym samym procesie co aplikacja do debugowania, musisz zaimplementować następujące metody IDebugProgramNode2:
-
Po wywołaniu
IDebugEngine2::Attachmetody wykonaj następujące kroki w implementacjiIDebugEngine2::Attachmetody :
Wyślij obiekt zdarzenia IDebugEngineCreateEvent2 do zestawu SDM. Aby uzyskać więcej informacji, zobacz Wysyłanie zdarzeń.
Wywołaj metodę GetProgramId w obiekcie IDebugProgram2 przekazanym
IDebugEngine2::Attachdo metody .Spowoduje to zwrócenie elementu
GUIDużywanego do identyfikowania programu. ElementGUIDmusi być przechowywany w obiekcie, który reprezentuje program lokalny w de, i musi być zwracany, gdyIDebugProgram2::GetProgramIdmetoda jest wywoływana w interfejsieIDebugProgram2.Uwaga
W przypadku zaimplementowania interfejsu
IDebugProgramNodeAttach2programGUIDjest przekazywany doIDebugProgramNodeAttach2::OnAttachmetody . Jest toGUIDużywane w przypadku programuGUIDzwróconego przez metodęIDebugProgram2::GetProgramId.Wyślij obiekt zdarzenia IDebugProgramCreateEvent2, aby powiadomić SDM, że obiekt lokalny
IDebugProgram2został utworzony w celu reprezentowania programu w de. Aby uzyskać szczegółowe informacje, zobacz Wysyłanie zdarzeń.Uwaga
Nie jest to ten sam
IDebugProgram2obiekt, który został przekazany doIDebugEngine2::Attachmetody . Wcześniej przekazany obiekt jest rozpoznawanyIDebugProgram2tylko przez port i jest oddzielnym obiektem.