Delen via


Gebruik van invoer en uitvoer

Zie Invoer en uitvoer voor een overzicht van de invoer- en uitvoerstromen in de foutopsporingsprogramma-engine.

Invoer

De engine vraagt om invoer van alle clients als de invoermethode wordt aangeroepen op een client. De invoer wordt geretourneerd naar de aanroeper van Input.

Callbacks voor invoer

Wanneer de engine om invoer van een client vraagt, wordt het IDebugInputCallbacks-object gebruikt dat is geregistreerd bij die client. Een IDebugInputCallbacks-object kan worden geregistreerd bij een client met behulp van SetInputCallbacks. Elke client kan maximaal één IDebugInputCallbacks-object hebben dat ermee is geregistreerd.

De aanvraag voor invoer begint met de engine die de methode IDebugInputCallbacks::StartInput aanroept . Hiermee wordt het IDebugInputCallbacks-object geïnformeerd dat de engine nu wacht op invoer.

Als het object IDebugInputCallbacks enige invoer voor de engine heeft, kan het de ReturnInput-methode van elke client aanroepen. Zodra de ReturnInput-methode is aangeroepen, neemt de engine geen invoer meer in beslag. Volgende aanroepers van deze methode worden geïnformeerd dat de invoer niet is ontvangen.

De engine roept vervolgens IDebugInputCallbacks::EndInput aan om aan te geven dat deze is gestopt met wachten op invoer.

Ten slotte echot de engine deze invoer naar het geregistreerde IDebugOutputCallbacks-object van elke client (behalve het object dat wordt gebruikt om de invoer op te geven) met behulp van IDebugOutputCallbacks::Output met het bitmasker ingesteld op DEBUG_OUTPUT_PROMPT.

Uitvoer

Uitvoer kan worden verzonden naar de engine met behulp van verschillende clientmethoden, bijvoorbeeld Output en OutputVaList. Na ontvangst van uitvoer verzendt de engine deze naar sommige clients.

Clients gebruiken een uitvoermasker om aan te geven in welke typen uitvoer ze geïnteresseerd zijn. Telkens wanneer de motor uitvoer produceert, gaat dit gepaard met een masker dat het uitvoertype specificeert. Als het type uitvoer overeenkomt met het uitvoermasker van de client, ontvangt de client de uitvoer. Het uitvoermasker kan worden ingesteld door SetOutputMask aan te roepen en een query uit te voeren met behulp van GetOutputMask. Zie DEBUG_OUTPUT_XXX voor meer informatie over de waarden van het uitvoermasker.

De lijst met clients waarnaar de engine uitvoer verzendt, wordt beheerd door het uitvoerbeheer. Normaal gesproken is het uitvoerbeheer ingesteld om uitvoer naar alle clients te verzenden; Het kan echter tijdelijk worden gewijzigd met Behulp van ControlledOutput en ControlledOutputVaList. Zie DEBUG_OUTCTL_XXX voor meer informatie over uitvoerbeheerwaarden.

De output kan worden gebufferd door de verwerkingsmotor. Als er meerdere stukken uitvoer aan de motor worden doorgegeven, kan het deze verzamelen en verzenden naar de clients in één groot stuk. Als u deze buffer wilt leegmaken, gebruikt u FlushCallbacks.

Elk clientobject heeft een uitvoerbreedte, de breedte van de uitvoerweergave voor het clientobject. Hoewel deze breedte alleen wordt gebruikt als hint, maken sommige opdrachten en extensiefuncties hun uitvoer op basis van deze breedte op. De breedte wordt geretourneerd door de methode GetOutputWidth en kan worden ingesteld met behulp van de methode SetOutputWidth.

Callbacks voor uitvoer

Wanneer de engine uitvoer naar een client verzendt, wordt het IDebugOutputCallbacks-object gebruikt dat is geregistreerd bij de client. Een IDebugOutputCallbacks-object kan worden geregistreerd bij een client met behulp van SetOutputCallbacks. Elke client kan maximaal één IDebugInputCallbacks-object hebben dat ermee is geregistreerd.

De engine roept de IDebugOutputCallbacks::Output-methode aan om de uitvoer te verzenden.

Voorvoegsel van uitvoerregel

Elk clientobject heeft een uitvoerregelvoorvoegsel dat wordt toegevoegd aan elke regel uitvoer die wordt verzonden naar de uitvoer-callback die is gekoppeld aan het clientobject. Dit kan worden gebruikt voor inspringing van tekst of om identificatiemarkeringen op elke regel van de uitvoer te plaatsen.

Het voorvoegsel van de uitvoerregel wordt geretourneerd door GetOutputLinePrefix en kan worden ingesteld met behulp van SetOutputLinePrefix. Gebruik PushOutputLinePrefix en PopOutputLinePrefix om het voorvoegsel van de uitvoerregel tijdelijk te wijzigen en later opnieuw te wijzigen.

Logboekbestanden

De foutopsporingsprogramma-engine ondersteunt het openen van een logboekbestand om een foutopsporingssessie vast te leggen. Maximaal één logboekbestand kan tegelijk worden geopend. Uitvoer die naar de uitvoer callbacks wordt verzonden, wordt ook naar dit logboekbestand verzonden (tenzij deze is gemarkeerd om niet te worden geregistreerd).

Als u een logboekbestand wilt openen, gebruikt u OpenLogFile2 (of OpenLogFile). De methode GetLogFile2 (of GetLogFile) retourneert het momenteel geopende logboekbestand. Gebruik CloseLogFile om het logboekbestand te sluiten.

De methode SetLogMask kan worden gebruikt om de uitvoer te filteren die naar het logboekbestand wordt verzonden en GetLogMask retourneert het huidige logboekbestandsfilter.

Prompt

In een interactieve foutopsporingssessie kan een prompt worden gebruikt om aan de gebruiker aan te geven dat het foutopsporingsprogramma wacht op gebruikersinvoer. De prompt wordt verzonden naar de uitvoer-callbacks met behulp van de methoden OutputPrompt en OutputPromptVaList . De inhoud van de standaardpromptprompt wordt geretourneerd door GetPromptText.