Uruchamianie programu
Użytkownicy, którzy chcą debugować program, mogą nacisnąć klawisz F5 , aby uruchomić debuger ze środowiska IDE. Rozpoczyna to serię zdarzeń, które ostatecznie powodują połączenie środowiska IDE z aparatem debugowania (DE), który jest z kolei połączony lub dołączony do programu w następujący sposób:
Środowisko IDE najpierw wywołuje pakiet projektu, aby uzyskać aktywne ustawienia debugowania projektu rozwiązania. Ustawienia obejmują katalog początkowy, zmienne środowiskowe, port, w którym program zostanie uruchomiony, oraz de do utworzenia programu, jeśli zostanie określony. Te ustawienia są przekazywane do pakietu debugowania.
Jeśli określono de, DE wywołuje system operacyjny, aby uruchomić program. W wyniku uruchomienia programu środowisko uruchomieniowe programu jest ładowane. Jeśli na przykład program jest napisany w języku MSIL, środowisko uruchomieniowe języka wspólnego zostanie wywołane w celu uruchomienia programu.
— lub —
Jeśli de nie zostanie określony, port wywołuje system operacyjny, aby uruchomić program, co powoduje załadowanie środowiska uruchomieniowego programu.
Uwaga
Jeśli de jest używany do uruchamiania programu, prawdopodobnie ten sam DE zostanie dołączony do programu.
W zależności od tego, czy de, czy port uruchomił program, DE, czy środowisko czasu wykonywania, następnie tworzy opis programu lub węzeł i powiadamia port, że program jest uruchomiony.
Uwaga
Zaleca się utworzenie węzła programu przez środowisko uruchomieniowe, ponieważ węzeł programu jest uproszczoną reprezentacją programu, który można debugować. Nie ma potrzeby ładowania całego de tylko do utworzenia i zarejestrowania węzła programu. Jeśli de jest przeznaczony do uruchamiania w procesie IDE, ale w rzeczywistości nie jest uruchomione żadne środowisko IDE, musi istnieć składnik, który może dodać węzeł programu do portu.
Nowo utworzony program wraz z innymi programami, powiązanymi lub niepowiązanymi, uruchomionymi lub dołączonymi z tego samego środowiska IDE, utwórz sesję debugowania.
Programowo, gdy użytkownik najpierw naciska klawisz F5, pakiet debugowania programu Visual Studio wywołuje pakiet projektu (skojarzony z typem uruchamianego programu) za pomocą DebugLaunch metody, która z kolei wypełnia VsDebugTargetInfo2 strukturę aktywnymi ustawieniami debugowania projektu rozwiązania. Ta struktura jest przekazywana z powrotem do pakietu debugowania za pomocą wywołania LaunchDebugTargets2 metody . Następnie pakiet debugowania tworzy wystąpienie menedżera debugowania sesji (SDM), który uruchamia debugowany program i wszystkie skojarzone aparaty debugowania.
Jednym z argumentów przekazywanych do SDM jest identyfikator GUID de, który ma być używany do uruchamiania programu.
Jeśli identyfikator GUID DE nie
GUID_NULL
jest , SDM współtworzy DE, a następnie wywołuje metodę LaunchSuspended , aby uruchomić program. Jeśli na przykład program jest napisany w kodzie natywnym,IDebugEngineLaunch2::LaunchSuspended
prawdopodobnie wywołaCreateProcess
funkcję iResumeThread
(funkcje Win32), aby uruchomić program.W wyniku uruchomienia programu środowisko uruchomieniowe programu jest ładowane. De lub środowisko czasu wykonywania tworzy interfejs IDebugProgramNode2 w celu opisania programu i przekazuje ten interfejs do addProgramNode w celu powiadomienia portu, że program jest uruchomiony.
Jeśli
GUID_NULL
zostanie przekazana, port uruchomi program. Po uruchomieniu programu środowisko uruchomieniowe tworzyIDebugProgramNode2
interfejs opisujący program i przekazujący go doIDebugPortNotify2::AddProgramNode
programu . Spowoduje to powiadomienie o porcie, na którym jest uruchomiony program. Następnie SDM dołącza aparat debugowania do uruchomionego programu.
W tym obszarze
Po powiadomieniu portu wyjaśniono, co się stanie po uruchomieniu programu, a port jest powiadamiany.
Dołączanie po uruchomieniu dokumentów, gdy sesja debugowania jest gotowa do dołączenia de do programu.