Animace programu - Program animation

Animace programu nebo Stepping označuje nyní velmi běžnou metodu ladění provádění kódu po jednom „řádku“ najednou. Programátor může zkoumat stav programu, stroje a souvisejících dat před a po provedení konkrétního řádku kódu. To umožňuje izolované vyhodnocení účinků tohoto příkazu nebo instrukce a tím získat vhled do chování (nebo nesprávného chování) provádějícího programu. Téměř všechny moderní IDE a debuggery podporují tento způsob provedení. Některé testovací nástroje umožňují provádění programů krok za krokem volitelně na úrovni zdrojového kódu nebo na úrovni strojového kódu v závislosti na dostupnosti dat shromážděných v době kompilace .

Dějiny

Konzole operátora System / 360 (model 65) s lampami pro registraci hodnot a přepínacími tlačítky a tlačítky (uprostřed obrázku).

Krokování instrukce nebo jeden cyklus také odkazoval na související, mikroskopičtější, ale nyní zastaralou metodu ladění kódu zastavením hodin procesoru a jeho ručním posunem po jednom cyklu. Aby to bylo možné, jsou vyžadovány tři věci:

  • Ovládací prvek, který umožňuje zastavení hodin (např. Tlačítko „Stop“).
  • Druhý ovládací prvek, který umožňuje ruční zastavení zastavených hodin o jeden cyklus (např. Spínač „krok instrukce“ a tlačítko „Start“).
  • Některé způsoby zaznamenávání stavu procesoru po každém cyklu (např. Zobrazení registru a paměti).

U řady procesorů IBM System 360 oznámených v roce 1964 byla tato zařízení poskytována spínači na předním panelu, tlačítky a bankami neonových světel.

Jiné systémy, jako je PDP-11, poskytovaly podobné vybavení, opět u některých modelů. Přesná konfigurace byla také závislá na modelu. Nebylo by snadné zajistit taková zařízení na procesorech LSI, jako jsou řady Intel x86 a Pentium , z důvodu chlazení.

Jako vícenásobné staly samozřejmostí, tyto techniky by mít omezený praktičnost, protože mnoho nezávislých procesů by být zastavena současně. To vedlo k vývoji proprietárního softwaru od několika nezávislých prodejců, kteří poskytovali podobné funkce, ale záměrně omezovali zarážky a krokování instrukcí pro konkrétní aplikační programy v konkrétních adresních prostorech a vláknech . Stav programu (podle použitelnosti pro vybranou aplikaci / vlákno) byl v každém kroku uložen ke kontrole a obnoven před obnovením, což vyvolává dojem prostředí jediného uživatele. To obvykle postačuje pro diagnostiku problémů na aplikační vrstvě.

Místo použití tlačítka fyzického zastavení k pozastavení spuštění - aby bylo možné začít procházet aplikačním programem, musí být obvykle předem nastaven bod zlomu nebo požadavek „Pozastavit“, obvykle na konkrétní příkaz / instrukci v programu (předem zvolený nebo alternativně výchozí, na první instrukci).

K zajištění „animace“ programu na celou obrazovku je obvykle zapotřebí vhodné I / O zařízení, jako je například videomonitor, které dokáže zobrazit přiměřenou část kódu (např. Ve smontovaném strojovém kódu nebo ve formátu zdrojového kódu ) a poskytnout ukazatel (např. <==) na aktuální instrukci nebo řádek zdrojového kódu. Z tohoto důvodu muselo rozšířené používání těchto animátorů na celou obrazovku ve světě sálových počítačů počkat na příchod systémů pro zpracování transakcí - například CICS na začátku 70. let, a původně se omezovaly na ladění aplikačních programů fungujících v tomto prostředí. Novější verze stejných produktů poskytovaly meziregionální monitorování / ladění dávkových programů a dalších operačních systémů a platforem.

S mnohem pozdějším zavedením osobních počítačů od roku 1980 a dále bylo možné integrovat ladicí programy v širší míře do této domény jediného uživatele a poskytly podobnou animaci rozdělením uživatelské obrazovky a přidáním ladicí „konzoly“ zajišťující interakci programátora.

Borland Turbo Debugger byl samostatný produkt představený v roce 1989, který poskytoval animaci programů na celou obrazovku pro PC. Novější verze přidaly podporu pro kombinování animace se skutečnými zdrojovými řádky extrahovanými v době kompilace.

Techniky animace programů

Existují nejméně tři odlišné softwarové techniky pro vytváření „animace“ během provádění programů.

  • Přístrojové vybavení zahrnuje přidání dalšího zdrojového kódu do programu vdobě kompilace pro volání animátoru před nebo po každém příkazu, aby se zastavilo normální provádění. Pokud je program, který má být animován, interpretovaný typ, například bytecode nebo CIL, použije tlumočník (nebo IDE kód) svůj vlastní vestavěný kód k zabalení cílového kódu.
  • Indukované přerušení Tato technika zahrnuje vynucení zarážky v určitých bodech programu v době provádění, obvykle změnou instrukce strojového kódu v tomto bodě (může to být vložené systémové volání nebo úmyslná neplatná operace) a čekání na přerušení. Když dojde k přerušení, je zpracován testovacím nástrojem, aby ohlásil stav zpět programátorovi. Tato metoda umožňuje provádění programu při plné rychlosti (dokud nedojde k přerušení), ale trpí nevýhodou, že většina pokynů vedoucích k přerušení není nástrojem sledována.
  • Simulátor instrukční sady Tato technika zpracovává strojový kód zkompilovaných programůjako jeho vstupní „data“ a plně simuluje instrukce hostitelského stroje, monitoruje kód pro podmíněné nebo bezpodmínečné zarážky nebo požadavky na animaci „jednoho cyklu“ vyžadované programátorem mezi každým krokem.

Porovnání metod

Výhodou poslední metody je, že v kompilovaném programu nejsou provedeny žádné změny, které by poskytly diagnostiku, a existuje téměř neomezený prostor pro rozsáhlou diagnostiku, protože tento nástroj může rozšířit diagnostiku hostitelského systému o další funkce sledování softwaru. Pomocí této techniky je také možné automaticky diagnostikovat (a zabránit) mnoha chybám programu, včetně narušení úložiště a přetečení vyrovnávací paměti . Detekce smyčky je také možná pomocí automatického trasování instrukcí spolu s prahovými hodnotami počtu instrukcí (např. Pauza po 10 000 instrukcích; zobrazení posledních n instrukcí) Druhá metoda pouze změní instrukci, která se zastaví před jejím provedením a může ji také obnovit před volitelným obnovením programátor. Někteří animátoři volitelně umožňují použití více než jedné metody v závislosti na požadavcích. Například pomocí metody 2 provést do určitého bodu plnou rychlostí a poté pomocí simulace sady instrukcí.

Další funkce

Animátor může nebo nemusí kombinovat další testovací / ladicí funkce, jako je trasování programu , výpis, podmíněná zarážka a změna paměti, změna toku programu , analýza pokrytí kódu , detekce „horkého bodu“, detekce smyčky apod.

Příklady programových animátorů

(V den první objednávky vydání)

Externí odkazy a reference