Delen via


Een programma starten

Gebruikers die fouten in een programma willen opsporen, kunnen op F5 drukken om het foutopsporingsprogramma uit te voeren vanuit de IDE. Hiermee wordt een reeks gebeurtenissen gestart die uiteindelijk tot gevolg hebben dat de IDE verbinding maakt met een foutopsporingsengine (DE), die op zijn beurt is verbonden of is gekoppeld aan het programma als volgt:

  1. De IDE roept eerst het projectpakket aan om de actieve instellingen voor projectopsporing van de oplossing op te halen. De instellingen omvatten de beginmap, de omgevingsvariabelen, de poort waarin het programma wordt uitgevoerd en de DE die moet worden gebruikt om het programma te maken, indien opgegeven. Deze instellingen worden doorgegeven aan het foutopsporingspakket.

  2. Als er een DE is opgegeven, roept de DE het besturingssysteem aan om het programma te starten. Als gevolg van het starten van het programma wordt de runtimeomgeving van het programma geladen. Als een programma bijvoorbeeld is geschreven in MSIL, wordt de algemene taalruntime aangeroepen om het programma uit te voeren.

    – of –

    Als er geen DE is opgegeven, roept de poort het besturingssysteem aan om het programma te starten, waardoor de runtime-omgeving van het programma wordt geladen.

    Opmerking

    Als een DE wordt gebruikt om een programma te starten, is het waarschijnlijk dat dezelfde DE wordt gekoppeld aan het programma.

  3. Afhankelijk van of de DE of de poort het programma heeft gestart, maakt de DE of de runtime-omgeving vervolgens een programmabeschrijving of een knooppunt aan en geeft door aan de poort dat het programma draait.

    Opmerking

    Het wordt aanbevolen dat de runtimeomgeving het programmaknooppunt maakt, omdat het programmaknooppunt een lichtgewicht weergave is van een programma dat kan worden gedebugd. Het is niet nodig om een hele DE te laden om een programmaknooppunt te maken en te registreren. Als de DE is ontworpen voor uitvoering in het proces van de IDE, maar er geen IDE daadwerkelijk wordt uitgevoerd, moet er een onderdeel zijn dat een programmaknooppunt aan de poort kan toevoegen.

    Het zojuist gemaakte programma, samen met andere programma's, gerelateerde of niet-gerelateerde, gestarte of gekoppeld aan dezelfde IDE, stelt een foutopsporingssessie op.

    Programmatisch, wanneer de gebruiker voor het eerst op F5 drukt, roept het foutopsporingspakket van Visual Studio het projectpakket aan (dat is gekoppeld aan het type programma dat wordt gestart) via de DebugLaunch methode, die op zijn beurt een VsDebugTargetInfo2 structuur invult met de actieve projectopsporingsinstellingen van de oplossing. Deze structuur wordt doorgegeven aan het foutopsporingspakket via een aanroep naar de LaunchDebugTargets2 methode. Het foutopsporingspakket instantieert vervolgens de sessiedebug manager (SDM), waarmee het programma wordt gestart dat wordt opgespoord en eventuele bijbehorende foutopsporingsengines.

    Een van de argumenten die worden doorgegeven aan de SDM is de GUID van de DE die moet worden gebruikt om het programma te starten.

    Als de DE GUID niet GUID_NULL is, co-creëert de SDM de DE en roept vervolgens de LaunchSuspended-methode aan om het programma te starten. Bijvoorbeeld, als een programma in systeemeigen code is geschreven, zal IDebugEngineLaunch2::LaunchSuspended waarschijnlijk CreateProcess en ResumeThread (Win32-functies) aanroepen.

    Als gevolg van het starten van het programma wordt de runtime-omgeving van het programma geladen. De DE of de runtimeomgeving maakt vervolgens een IDebugProgramNode2-interface om het programma te beschrijven en geeft deze interface door aan AddProgramNode om de poort te melden dat het programma wordt uitgevoerd.

    Als GUID_NULL wordt doorgegeven, start de poort het programma. Zodra het programma wordt uitgevoerd, maakt de runtime-omgeving een IDebugProgramNode2 interface om het programma te beschrijven en door te geven aan IDebugPortNotify2::AddProgramNode. Hiermee wordt de poort aangegeven waarop het programma wordt uitgevoerd. Vervolgens koppelt SDM de foutopsporingsengine aan het actieve programma.

In deze sectie

Het informeren van de poort legt uit wat er gebeurt nadat een programma is gestart en de poort op de hoogte wordt gesteld.

Verbinden na een lancering wanneer de debugsessie gereed is om de debugger aan het programma te koppelen.

  • Foutopsporingstaken bevatten koppelingen naar verschillende foutopsporingstaken, zoals het starten van een programma en het evalueren van expressies.