Ladění programu

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. dubna 2022; kontroly vyžadují 4 úpravy .

Ladění  je fází vývoje počítačového programu , ve které se zjišťují, lokalizují a eliminují chyby. Abyste pochopili, kde k chybě došlo, musíte:

Existují dvě doplňkové technologie ladění:

Místo ladění ve vývojovém cyklu programu

Typický vývojový cyklus, který se během životnosti programu mnohokrát opakuje, vypadá asi takto:

  1. Programování  - zavádění nových funkcí do programu, oprava existujících chyb .
  2. Testování (ruční nebo automatizované; programátorem, testerem nebo uživatelem; " kouřové ", v režimu černé skříňky nebo modulární ) - detekce skutečnosti, že došlo k chybě.
  3. Reprodukce chyby je zjištění podmínek, za kterých k chybě dochází. To se může ukázat jako obtížný úkol při programování souběžných procesů as některými neobvyklými chybami známými jako heisenbugs .
  4. Ladění  – hledání příčiny chyby.

Nástroje

Ladění často vyžaduje vysokou kvalifikaci a značné zdroje. Schopnost programátora ladit je důležitým faktorem při hledání zdroje problému, ale obtížnost ladění je velmi závislá na použitém programovacím jazyce a nástrojích, zejména debuggerech .

Nástroje pro ladění

Ladicí program je softwarový nástroj, který umožňuje programátorovi sledovat provádění zkoumaného programu, zastavovat jej a restartovat, spouštět jej zpomaleně, měnit hodnoty v paměti a v některých případech se dokonce vrátit v čase.

Také užitečné nástroje v rukou programátora mohou být:

Používání vysokoúrovňových programovacích jazyků obvykle usnadňuje ladění, pokud takové jazyky obsahují například zařízení pro zpracování výjimek, díky nimž je mnohem snazší najít zdroj problému. V nízkoúrovňových jazycích mohou chyby vést k jemným problémům, jako je poškození paměti a úniky paměti . Pak může být docela obtížné určit, co bylo původní příčinou chyby. V těchto případech mohou být vyžadovány složité techniky a nástroje pro ladění.

„Naší osobní volbou je pokusit se nepoužívat debuggery, s výjimkou zobrazení zásobníku volání nebo hodnot několika proměnných . Jedním z důvodů je, že je velmi snadné se ztratit v detailech složitých datových struktur a cest provádění programů. Procházení programu považujeme za méně produktivní než usilovné přemýšlení a kontrolu kódu v kritických bodech.

Kliknutí na operátory zabere více času než prohlížení zpráv operátorů pro vydávání ladicích informací umístěných na kritických místech. Je rychlejší rozhodnout se, kam umístit ladicí příkaz, než procházet kritickými částmi kódu, a to i za předpokladu, že víme, kde tyto části jsou. Ještě důležitější je, že příkazy ladění jsou v programu zachovány a relace ladicího programu jsou přechodné.

Slepé bloudění v debuggeru je s největší pravděpodobností neproduktivní. Je užitečnější použít debugger, abyste zjistili stav programu, ve kterém dělá chybu, a pak se zamyslete nad tím, jak by takový stav mohl nastat. Debuggery mohou být složité a matoucí programy, zejména pro začátečníky, pro které budou spíše matoucí než užitečné ... “

„Ladění je těžké a může trvat nepředvídatelně dlouho, takže cílem je většinu toho obejít. Techniky, které mohou pomoci zkrátit dobu ladění, zahrnují dobrý design, dobrý styl , kontrolu hraničních podmínek, validaci počátečních tvrzení a přiměřenosti kódu, defenzivní programování , dobře navržená rozhraní, omezené použití globálních proměnných, automatické kontroly a kontroly. Unce prevence stojí za tunu léčby."

Brian Kernighan a Rob Pike

Nástroje, které snižují potřebu ladění

Dalším směrem je, aby ladění bylo co nejméně časté. Pro toto platí:

Zabezpečení kódu a ladění

V kódu programu může docházet k tzv. nezdokumentovanému chování  - závažným chybám, které se při běžném běhu programu neobjeví, ale jsou velmi nebezpečné pro bezpečnost celého systému v případě cíleného útoku. Nejčastěji je to důsledek chyb programátora. Nejznámějšími příklady jsou SQL injection a buffer overflow . V tomto případě je úkolem ladění:

Existují takové metody:

Viz také

Poznámky

Literatura

Odkazy