Programhibakeresés

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. április 7-én felülvizsgált verziótól ; az ellenőrzések 4 szerkesztést igényelnek .

A hibakeresés a számítógépes program  fejlesztésének egy szakasza, amelyben a hibákat észlelik, lokalizálják és kiküszöbölik. A hiba okának megértéséhez a következőket kell tennie:

Két egymást kiegészítő hibakeresési technológia létezik:

A hibakeresés helye egy program fejlesztési ciklusában

Egy tipikus fejlesztési ciklus, amely egy program élete során sokszor megismétlődik, valahogy így néz ki:

  1. Programozás  - új funkciók bevezetése a programba, meglévő hibák javítása .
  2. Tesztelés (kézi vagy automatizált; programozó, tesztelő vagy felhasználó által; " füst ", fekete doboz módban vagy modulárisan ) - a hiba tényének észlelése.
  3. A hiba reprodukálása azt jelenti, hogy kitaláljuk, milyen körülmények között fordul elő hiba. Ez trükkös feladatnak bizonyulhat párhuzamos folyamatok programozásakor, és néhány szokatlan, heisenbugs néven ismert hibával .
  4. Hibakeresés  – a hiba okának megkeresése.

Eszközök

A hibakeresés gyakran magas szakértelmet és jelentős erőforrásokat igényel. A programozó hibakeresési képessége fontos tényező a probléma forrásának megtalálásában, de a hibakeresés nehézsége nagymértékben függ a programozási nyelvtől és a használt eszközöktől, különösen a hibakeresőktől .

Hibakereső eszközök

A debugger egy olyan szoftvereszköz, amely lehetővé teszi a programozó számára, hogy megfigyelje a vizsgált program végrehajtását, leállítsa és újraindítsa, lassítva futtassa, módosítsa a memóriában lévő értékeket, sőt bizonyos esetekben vissza is léphessen az időben.

Szintén hasznos eszközök lehetnek a programozó kezében:

A magas szintű programozási nyelvek használata általában megkönnyíti a hibakeresést, ha az ilyen nyelvek tartalmaznak például kivételkezelési lehetőségeket, amelyek megkönnyítik a probléma forrásának megtalálását. Alacsony szintű nyelveken a hibák olyan finom problémákhoz vezethetnek, mint a memória sérülése és memóriaszivárgás . Ezután meglehetősen nehéz lehet megállapítani, hogy mi volt a hiba eredeti oka. Ezekben az esetekben összetett technikákra és hibakereső eszközökre lehet szükség.

„Személyes döntésünk az, hogy ne használjunk hibakeresőket, kivéve a hívási verem vagy néhány változó értékének megtekintését . Ennek egyik oka, hogy nagyon könnyen el lehet veszni a bonyolult adatstruktúrák és programvégrehajtási utak részleteiben. A programon való átlépést kevésbé produktívnak találjuk, mint a kemény gondolkodást és a kódellenőrzést a kritikus pontokon.

Az operátorokra való kattintás több időt vesz igénybe, mint az operátorok kritikus pontokon elhelyezett hibakeresési információit kibocsátó üzeneteinek megtekintése. Gyorsabb eldönteni, hogy hova helyezzük el a hibakeresési utasítást, mint végiglépni a kód kritikus szakaszain, még akkor is, ha tudjuk, hol vannak ezek a szakaszok. Ennél is fontosabb, hogy a hibakeresési utasítások megmaradnak a programban, és a hibakereső munkamenetek átmenetiek.

A hibakeresőben való vak vándorlás nagy valószínűséggel terméketlen. Hasznosabb egy hibakereső segítségével kideríteni a program állapotát, amelyben hibát követ el, majd gondolja át, hogyan fordulhat elő ilyen állapot. A hibakeresők bonyolult és zavaró programok lehetnek, különösen a kezdők számára, akik számára inkább zavarba ejtőek, mint hasznosak... "

„A hibakeresés nehéz, és beláthatatlanul sokáig tarthat, ezért a cél az, hogy a legtöbbet megkerüljük. A hibakeresési időt csökkentő technikák közé tartozik a jó tervezés, a jó stílus , a határfeltételek ellenőrzése, a kezdeti állítások és a kód ésszerűségének validálása, a védekező programozás , a jól megtervezett interfészek, a globális változók korlátozott használata, az automatikus vezérlések és ellenőrzések. Egy csepp megelőzés is megér egy csomó gyógymódot."

- Brian Kernighan és Rob Pike

Eszközök, amelyek csökkentik a hibakeresés szükségességét

Egy másik irány, hogy minél ritkább legyen a hibakeresés. Erre érvényes:

Kódbiztonság és hibakeresés

A programkódban előfordulhat úgynevezett dokumentálatlan viselkedés  - súlyos hibák, amelyek nem jelennek meg a normál programvégrehajtás során, de célzott támadás esetén nagyon veszélyesek az egész rendszer biztonságára. Leggyakrabban ez a programozói hibák eredménye. A leghíresebb példák az SQL injekció és a puffertúlcsordulás . Ebben az esetben a hibakeresés feladata:

Vannak ilyen módszerek:

Lásd még

Jegyzetek

Irodalom

Linkek