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.
Aparat debugera może debugować wiele obiektów docelowych jednocześnie. Sesja debugowania rozpoczyna się, gdy silnik uzyskuje cel i kontynuuje się do momentu, gdy odrzucone zostaną wszystkie cele. Sesja debugowania jest niedostępna , gdy obiekty docelowe są wykonywane i dostępne , gdy bieżący element docelowy jest zawieszony. Aparat może służyć tylko do badania obiektów docelowych i manipulowania nimi, gdy sesja jest dostępna.
Pętla główna debugera zwykle składa się z ustawiania stanu wykonywania, wywoływania metody WaitForEvent i obsługi wygenerowanych zdarzeń. Po wywołaniu metody WaitForEvent sesja stanie się niedostępna.
Gdy zdarzenie występuje w obiekcie docelowym, silnik zawiesza wszystkie obiekty docelowe, a sesja jest dostępna. Następnie silnik powiadamia procedury obsługi zdarzeń o zdarzeniu i postępuje zgodnie z regułami filtru zdarzeń. Wywołania zwrotne zdarzeń i filtry zdarzeń określają, w jaki sposób powinno przebiegać wykonywanie w obiekcie docelowym. Jeśli ustalą, że aparat powinien włamać się do debugera, metoda WaitForEvent zwraca wartość , a sesja pozostaje dostępna; W przeciwnym razie aparat wznowi wykonywanie obiektu docelowego w sposób określony przez wywołania zwrotne zdarzeń i filtry zdarzeń, a sesja stanie się ponownie niedostępna.
Czas trwania wywołania WaitForEvent — w szczególności podczas powiadamiania procedur zwrotnych zdarzeń i przetwarzania reguł filtra — aparat jest w stanie zwanym "w stanie oczekiwania". Chociaż w tym stanie nie można wywołać WaitForEvent (nie jest reentrantna).
Istnieją dwa kroki związane z inicjowaniem wykonywania w obiekcie docelowym: ustawienie stanu wykonania, a następnie wywołanie metody WaitForEvent. Stan wykonywania można ustawić przy użyciu metody SetExecutionStatus lub wykonując polecenie debugera, które ustawia stan wykonania — na przykład g(Go) i p (Krok).
Jeśli sekwencja poleceń debugera jest wykonywana razem — na przykład "g ; ? @$ip"- niejawne oczekiwanie nastąpi po każdym poleceniu, które wymaga wykonania w obiekcie docelowym, jeśli to polecenie nie jest ostatnim poleceniem w sekwencji. Niejawne oczekiwanie nie może wystąpić, gdy mechanizm debugowania znajduje się w stanie "podczas oczekiwania"; w tym przypadku wykonanie poleceń zostanie zatrzymane, a bieżące polecenie — to, które próbowało spowodować niejawne oczekiwanie — zostanie zinterpretowane jako instrukcja dotycząca kontynuacji wykonania w obiekcie docelowym. Pozostałe polecenia zostaną odrzucone.
Uwaga Podczas określania dostępności sesji, ograniczone wykonanie obiektu docelowego (na przykład krok po kroku) jest uznawane za wykonanie przez silnik. Po zakończeniu wykonywania w trybie ograniczonym sesja stanie się dostępna.
Aparat hosta
Podczas zdalnego debugowania można użyć wielu wystąpień silnika debuggera. Dokładnie jedno z tych wystąpień utrzymuje sesję debugowania; to wystąpienie jest nazywane silnikiem hosta.
Wszystkie operacje debugera są związane z aparatem hosta, na przykład ładowanie symboli i rozszerzeń.