Sdílet prostřednictvím


Řízení provádění

Ladicí modul (DE) obvykle odesílá jednu z následujících událostí jako poslední spouštěcí událost:

  • Událost vstupního bodu, pokud se připojuje k nově spuštěné aplikaci

  • Událost dokončení načtení, pokud se připojujete k programu, který je již spuštěný

    Obě tyto události zastavují události, což znamená, že de čeká na odpověď od uživatele prostřednictvím integrovaného vývojového prostředí (IDE). Další informace naleznete v části Provozní režimy.

Zastavení události

Při zastavení události se odešle do ladicí relace:

  1. Program a vlákno, které obsahují aktuální instrukční ukazatel lze získat z rozhraní událostí.

  2. Integrované vývojové prostředí určuje aktuální soubor a umístění zdrojového kódu, které se zobrazí jako zvýrazněné v editoru.

  3. Ladicí relace obvykle reaguje na tuto první zastavení událost voláním metody Continue programu.

  4. Program se pak spustí, dokud nenarazí na stav zastavení, jako je například dosažení zarážky. V takovém případě de odešle zarážku do ladicí relace. Událost zarážky je zastavovací událost a de znovu čeká na odpověď uživatele.

  5. Pokud se uživatel rozhodne přejít do funkce, pře nebo z funkce, integrované vývojové prostředí vyzve ladicí relaci k volání metody programu Step . Integrované vývojové prostředí (IDE) pak předá jednotku kroku (instrukce, příkaz nebo řádek) a typ kroku (ať už se má krokovat, přes nebo mimo funkci). Po dokončení kroku odešle de událost dokončení kroku do ladicí relace, což je událost zastavení.

    nebo

    Pokud se uživatel rozhodne pokračovat v provádění z aktuálního ukazatele instrukce, integrované vývojové prostředí vyzve relaci ladění k volání metody Execute programu. Program obnoví provádění, dokud nenarazí na další podmínku zastavení.

    nebo

    Pokud je ladicí relace ignorována konkrétní událost zastavení, ladicí relace volá metodu Continue programu. Pokud program při výskytu zastavovací podmínky přešel do funkce, přepne do ní nebo mimo ni, pokračuje v kroku.

    Programově, když de narazí na stav zastavení, odešle takové zastavení událostí jako IDebugLoadCompleteEvent2 nebo IDebugEntryPointEvent2 do správce ladění relace (SDM) prostřednictvím rozhraní IDebugEventCallback2. De předá IDebugProgram2 a IDebugThread2 rozhraní, které představují program a vlákno obsahující aktuální ukazatel instrukce. SDM volá IDebugThread2::EnumFrameInfo pro získání horního rámce zásobníku a volá IDebugStackFrame2::GetDocumentContext získat kontext dokumentu přidružený k aktuálnímu ukazateli instrukce. Tento kontext dokumentu je obvykle název souboru zdrojového kódu, řádek a číslo sloupce. Integrované vývojové prostředí (IDE) je používá ke zvýraznění zdrojového kódu, který obsahuje aktuální ukazatel instrukce.

    SDM obvykle reaguje na tuto první zastavení události voláním IDebugProgram2::Continue. Program pak poběží, dokud nenarazí na stav zastavení, jako je například dosažení zarážky, v takovém případě de odešle IDebugBreakpointEvent2 Rozhraní do SDM. Událost zarážky je zastavovací událost a de znovu čeká na odpověď uživatele.

    Pokud se uživatel rozhodne přejít do funkce, pře nebo z funkce, integrované vývojové prostředí vyzve SDM k volání IDebugProgram2::Step. Integrované vývojové prostředí (IDE) pak předá STEPUNIT (instrukce, příkaz nebo řádek) a STEPKIND, tj. jestli se má krokovat, převést nebo z funkce. Po dokončení kroku odešle DE rozhraní IDebugStepCompleteEvent2 do SDM, což je zastavovací událost.

    Pokud se uživatel rozhodne pokračovat v provádění z aktuálního ukazatele instrukce, integrované vývojové prostředí požádá SDM, aby volal IDebugProgram2::Execute. Program obnoví provádění, dokud nenarazí na další podmínku zastavení.

    Pokud má ladicí balíček ignorovat konkrétní událost zastavení, ladění balíček volá SDM, který volá IDebugProgram2::Continue. Pokud program při výskytu podmínky zastavení krokoval do funkce, přešel nebo z ní přestal, pokračuje v kroku. To znamená, že program udržuje krokovací stav, aby věděl, jak pokračovat.

    Volání SDM provádí , StepExecute a Continue jsou asynchronní, což znamená, že SDM očekává, že volání se vrátí rychle. Pokud de odešle SDM zastavenou událost ve stejném vlákně před Step, Execute nebo Continue vrátí, SDM přestane reagovat.