Sdílet prostřednictvím


Použití vstupu a výstupu

Přehled vstupních a výstupních datových proudů v modulu ladicího programu najdete v tématu Vstup a výstup.

Vstup

Modul požádá o vstup ze všech svých klientů, pokud je v klientovi volána metoda Input . Vstup se vrátí volajícímu funkce Input.

Zpětná volání vstupu

Když modul požádá o vstup z klienta, používá IDebugInputCallbacks objekt zaregistrovaný v daném klientovi. Objekt IDebugInputCallbacks může být registrován u klienta pomocí SetInputCallbacks. Každý klient může mít maximálně jeden objekt IDebugInputCallbacks zaregistrovaný.

Požadavek na vstup začíná modulem, který volá metodu IDebugInputCallbacks::StartInput . To informuje IDebugInputCallbacks objekt, že modul nyní čeká na vstup.

Pokud má objekt IDebugInputCallbacks nějaký vstup pro stroj, může zavolat metodu ReturnInput libovolného klienta. Jakmile je volána metoda ReturnInput , modul nebude přijímat žádné další vstupy. Další volající této metody budou informováni, že vstup nebyl přijat.

Modul pak zavolá IDebugInputCallbacks::EndInput , aby indikoval, že přestal čekat na vstup.

Nakonec stroj odešle tento vstup zaregistrovanému objektu každého klienta IDebugOutputCallbacks (s výjimkou toho, který byl použit k zajištění vstupu) pomocí IDebugOutputCallbacks::Output s bitovou maskou nastavenou na DEBUG_OUTPUT_PROMPT.

Výstup

Výstup může být odeslán do modulu pomocí několika klientských metod – například Output a OutputVaList. Při příjmu výstupu ho modul odešle některým klientům.

Klienti používají výstupní masku k označení typů výstupu, které mají zájem. Pokaždé, když je výstup vytvořen motorem, je doprovázen maskou určující jeho výstupní typ. Pokud typ výstupu odpovídá výstupní masce klienta, klient obdrží výstup. Výstupní masku lze nastavit voláním SetOutputMask a dotazováním pomocí GetOutputMask. Podrobnosti o hodnotách výstupní masky najdete v DEBUG_OUTPUT_XXX .

Seznam klientů, kterým modul odešle výstup, je řízen výstupním řízením. Výstupní ovládací prvek je obvykle nastavený tak, aby odesílal výstup všem klientům; Lze ho však dočasně změnit pomocí ControlledOutput a ControlledOutputVaList. Podrobnosti o hodnotách výstupního řízení najdete v DEBUG_OUTCTL_XXX .

Výstup může systém ukládat do vyrovnávací paměti. Pokud je do modulu předáno více částí výstupu, může je shromáždit a odeslat klientům v jedné velké části. Chcete-li vyprázdnit tuto vyrovnávací paměť, použijte FlushCallbacks.

Každý objekt klienta má výstupní šířku, což je šířka zobrazení výstupu pro objekt klienta. I když se tato šířka používá pouze jako nápověda, některé příkazy a funkce rozšíření formátují svůj výstup na základě této šířky. Šířka je vrácena GetOutputWidth metoda a lze nastavit pomocí SetOutputWidth metoda.

Zpětná volání výstupu

Když modul odesílá výstup klientovi, používá IDebugOutputCallbacks objekt zaregistrovaný v klientovi. Objekt IDebugOutputCallbacks může být registrován u klienta pomocí SetOutputCallbacks. Každý klient může mít maximálně jeden objekt IDebugInputCallbacks zaregistrovaný.

Chcete-li odeslat výstup, modul volá IDebugOutputCallbacks::Output metoda.

Předpona výstupního řádku

Každý objekt klienta má předponu výstupního řádku , která je předem připojena ke každému řádku výstupu odeslaného do zpětného volání výstupu přidruženého k objektu klienta. Můžete ho použít k odsazení nebo k umístění identifikačních značek na každý řádek výstupu.

Předpona výstupního řádku je vrácena GetOutputLinePrefix a lze ji nastavit pomocí SetOutputLinePrefix. Pokud chcete dočasně změnit předponu výstupního řádku a později ji znovu změnit, použijte PushOutputLinePrefix a PopOutputLinePrefix.

Soubory protokolu

Ladicí modul podporuje otevření logovacího souboru pro zaznamenání ladicí relace. Ve většině případů je možné otevřít jeden soubor protokolu. Výstup odeslaný do výstupních callbacků se také odešle do tohoto souboru protokolu (pokud není označen k nezaznamenání).

Pokud chcete otevřít soubor protokolu, použijte OpenLogFile2 (nebo OpenLogFile). Metoda GetLogFile2 (nebo GetLogFile) vrátí aktuálně otevřený soubor protokolu. Chcete-li zavřít soubor protokolu, použijte closeLogFile.

Metodu SetLogMask lze použít k filtrování výstupu odeslaného do souboru protokolu a GetLogMask vrátí aktuální filtr souboru protokolu.

Výzva

Během interaktivní relace ladění se dá výzva použít k naznačení uživateli, že ladicí program čeká na vstup od něj. Výzva se odešle do výstupních zpětných volání pomocí metod OutputPrompt a OutputPromptVaList . Obsah standardní výzvy vrátí GetPromptText.