Felsökningssession och exekveringsmodell

Felsökningsmotorn kan felsöka flera mål samtidigt. En felsökningssession börjar när motorn hämtar ett mål och fortsätter tills alla målen har tagits bort. En felsökningssession är otillgänglig medan målen körs och är tillgängliga när det aktuella målet pausas. Motorn kan bara användas för att undersöka och manipulera mål när sessionen är tillgänglig.

Huvudslingan för ett felsökningsprogram består vanligtvis av att ange körningsstatus, anropa metoden WaitForEvent och hantera de genererade händelserna. När WaitForEvent anropas blir sessionen otillgänglig.

När en händelse inträffar i ett mål suspenderar motorn alla mål och sessionen blir tillgänglig. Motorn meddelar sedan händelseåteranropen av händelsen och följer reglerna för händelsefiltrering. Händelseåteranrop och händelsefilter avgör hur körningen i målprogrammet ska fortsätta. Om de bedömer att motorn ska bryta sig in i felsökningsprogrammet returnerar metoden WaitForEvent och sessionen förblir tillgänglig. Annars återupptar motorn körningen av målet på det sätt som bestäms av händelseåteranrop och händelsefilter, och sessionen blir otillgänglig igen.

Under väntetiden för WaitForEvent-anropet – i synnerhet när du meddelar händelseåteranropen och bearbetar filterreglerna – är motorn i ett tillstånd som kallas "inuti en väntan". I det här tillståndet går det inte att anropa WaitForEvent (det är inte reentrant).

Det finns två steg som ingår i att initiera körningen i ett mål: ange körningsstatus och sedan anropa WaitForEvent. Körningsstatusen kan anges med metoden SetExecutionStatus eller genom att köra ett felsökningskommando som anger körningsstatus, till exempel g(Go) och p (Steg).

Om en sekvens med felsökningskommandon körs tillsammans – till exempel "g ; ? @$ip" – kommer en implicit väntan att inträffa efter alla kommandon som måste köras i målet, om det inte är det sista kommandot i sekvensen. Det går inte att vänta implicit när felsökningsmotorn är i tillståndet "inuti en väntan". I det här fallet stoppas körningen av kommandona och det aktuella kommandot – det som försökte orsaka den implicita väntetiden – tolkas som en indikation på hur körningen i målet ska fortsätta. Resten av kommandona tas bort.

Obs När du avgör om sessionen är tillgänglig eller otillgänglig betraktas begränsad körning av ett mål (till exempel stegning) som körning av motorn. När det begränsade utförandet är klart blir sessionen tillgänglig.

Värdmotor

När du felsöker via fjärranslutning kan du använda flera instanser av felsökningsmotorn. Exakt en av dessa instanser underhåller felsökningssessionen; den här instansen kallas värdmotorn.

Alla felsökningsåtgärder är relativa till värdmotorn, till exempel symbolinläsning och tilläggsinläsning.