Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ladicí stroj (DE) obvykle odesílá některou z těchto 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
Když je událost zastavena, je odeslána do ladicí relace.
Program a vlákno, které obsahují aktuální instrukční ukazatel lze získat z rozhraní událostí.
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.
Ladicí relace obvykle reaguje na událost prvního zastavení voláním metody Continue programu.
Program pak běží, dokud nenarazí na podmínku zastavení, jako je například dosažení zarážky. V tomto případě DE odešle událost zarážky do ladicí relace. Událost breakpointu je zastavovací událost a DE znovu čeká na odpověď uživatele.
Pokud se uživatel rozhodne vstoupit do, přejít přes nebo vystoupit z funkce, integrované vývojové prostředí (IDE) 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 (zda se má postupovat do funkce, přes funkci, nebo mimo funkci). Po dokončení kroku odešle DE událost dokončení kroku do ladicí relace, která je událostí zastavení.-or-
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í.
-or-
Pokud je ladicí relace ignorována konkrétní událost zastavení, ladicí relace volá metodu Continue programu. Pokud program pokračoval v kroku, když narazil na zastavovací podmínku při vstupu do, překročení nebo výstupu z funkce, pak v kroku pokračuje.
Programově, když DE narazí na podmínku zastavení, odešle takové události zastavení, jako je IDebugLoadCompleteEvent2 nebo IDebugEntryPointEvent2, do správce ladění relace (SDM) prostřednictvím rozhraní IDebugEventCallback2. DE předá rozhraní IDebugProgram2 a IDebugThread2, 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 pro získání kontextu dokumentu přidruženého 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í zastavovací událost 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 rozhraní IDebugBreakpointEvent2 do SDM. Událost zarážky je zastavovací událost a DE znovu čeká na odpověď uživatele.
Pokud se uživatel rozhodne vstoupit do funkce, přes ni přejít, nebo ji opustit, integrované vývojové prostředí vyzve SDM k vyvolání IDebugProgram2::Step. Integrované vývojové prostředí (IDE) pak předá STEPUNIT (instrukce, příkaz nebo řádek) a STEPKIND, tj. zda se má pokračovat krokováním do, přes, nebo ven z funkcí. Po dokončení kroku odešle DE rozhraní IDebugStepCompleteEvent2 do SDM, což je zastavovací událost.
Pokud se uživatel rozhodne pokračovat ve spouštění z ukazatele aktuální instrukce, integrované vývojové prostředí požádá SDM, aby zavolal 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í, ladicí 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í, která SDM dělá na
Step, Execute a Continue, jsou asynchronní, což znamená, že SDM očekává, že volání se rychle vrátí. Pokud DE odešle SDM zastavující událost ve stejném vlákně předtím, nežStep, Execute nebo Continue vrátí hodnotu, SDM přestane reagovat.