Keskeytyskohtien asettaminen ja askellus
Hallitkaa keskeytyskohtien käyttö suorituksen pysäyttämiseen sekä ohjelman kulun jäljittäminen askel askeleelta.
Keskeytyskohtien asettaminen ja askellus on ilmainen Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-kurssilla on yhteensä 4 oppituntia.
Ohjelman suorituspolun keskeyttäminen ja tarkastelu
Ohjelmia dynaamisesti analysoitaessa suorituksen keskeyttäminen tietyissä kohdissa on ratkaisevan tärkeää muuttujien, muistin ja rekistereiden tarkastelemiseksi. Näin voimme ymmärtää vaihe vaiheelta, mitä ohjelma tekee.
Tässä oppitunnissa opit käyttämään keskeytyskohtia suorituksen pysäyttämiseen ja askelkomentoja koodissa etenemiseen rivi riviltä.
Mitä keskeytyskohdat ovat?
Keskeytyskohta on kuin koodiin asetettu pysäytysmerkki. Kun ohjelma saavuttaa keskeytyskohdan sisältävän rivin, suoritus keskeytyy ja hallinta palautuu debuggerille.
- Niiden avulla ohjelman tila voidaan jäädyttää.
- Tämän jälkeen voit tutkia muuttujia, muistia ja suorittimen rekistereitä.
- Tämä on olennaista monimutkaisen logiikan ymmärtämisessä sekä virheiden ja haavoittuvuuksien tunnistamisessa.
Keskeytyskohtien tyypit
Yleisin tyyppi on koodin keskeytyskohta (jota kutsutaan myös käskyn keskeytyskohdaksi). Se keskeyttää suorituksen juuri ennen tietyn käskyn suorittamista.
On myös dataan liittyviä keskeytyskohtia (eli tarkkailupisteitä), jotka keskeyttävät suorituksen, kun tiettyyn muistiosoitteeseen käsiksi tai sitä muutetaan. Keskitymme nyt koodin keskeytyskohtiin.
Esimerkkiohjelma virheenkorjaukseen
Käytetään tätä yksinkertaista C-ohjelmaa keskeytyskohtien ja askeltamisen havainnollistamiseen. Siinä on muutama funktio suorituksen seuraamisen helpottamiseksi.
/* example.c */
#include <stdio.h>
int multiply(int a, int b) {
return a * b;
}
int calculate(int x, int y) {
int result = multiply(x, y);
return result + x;
}
int main() {
int val1 = 3;
int val2 = 4;
int final_result = calculate(val1, val2);
printf("Final Result: %d\n", final_result);
return 0;
}Koodin keskeytyskohdan asettaminen
Debuggerissa, kuten GDB:ssä, keskeytyskohta asetetaan yleensä määrittämällä funktion nimi tai rivinumero. Voit esimerkiksi asettaa keskeytyskohdan calculate-funktion alkuun:
break calculate(GDB)b example.c:11(GDB, riville 11)
Kun keskeytyskohta on asetettu ja ohjelma suoritetaan run-komennolla, se etenee normaalisti tähän kohtaan asti.
Suorittaminen keskeytyskohtaan asti
Kun olet asettanut keskeytyskohdan, anna yleensä run-komento (esimerkiksi GDB:ssä run). Ohjelman suoritus alkaa.
Kun ohjelmalaskuri saavuttaa käskyn, johon keskeytyskohta on asetettu, suoritus keskeytyy välittömästi. Debuggeri näyttää sen jälkeen nykyisen koodirivin ja odottaa seuraavaa komentoa.
Johdatus askeltamiseen
Kun suoritus on keskeytetty keskeytyskohtaan, askeltamisen avulla ohjelmaa voi suorittaa yksi käsky tai lähdekoodirivi kerrallaan. Näin ohjelman suorituspolkua voi hallita tarkasti.
Eri tilanteisiin on erilaisia askelkomentoja, joilla kullakin on oma toimintatapansa funktiokutsuja kohdattaessa.
Step over (<code>next</code>)
Step over -komento (GDB:ssä usein next) suorittaa nykyisen koodirivin. Jos nykyinen rivi sisältää funktiokutsun, se suorittaa koko funktion ja pysähtyy sitten funktiokutsua seuraavalle riville.
Käytä next-komentoa, kun luotat funktioon tai et ole kiinnostunut sen sisäisestä toiminnasta vaan ainoastaan sen palautusarvosta.
Step into (<code>step</code>)
Step into -komento (GDB:ssä usein step) suorittaa myös nykyisen rivin. Jos nykyinen rivi sisältää funktiokutsun, suoritus keskeytyy kuitenkin funktion ensimmäiseen käskyyn.
Käytä step-komentoa, kun haluat tutkia kutsuttavan funktion sisäistä logiikkaa.
Step out (<code>finish</code>)
step out -komentoa (GDB:ssä usein finish) käytetään, kun olet siirtynyt funktion sisään ja haluat nyt poistua siitä nopeasti.
Se suorittaa nykyisen funktion loppuosan ja pysähtyy kutsuvan funktion riville, joka on funktion kutsun palautumisen *jälkeen*. Näin sinun ei tarvitse käydä läpi jokaista sellaisen funktion riviä, josta et enää ole kiinnostunut.
Keskeytyskohtien tarkistus
Tarkastellaan esimerkkimme calculate-funktiota. Asetat keskeytyskohdan riville 11 (int result = multiply(x, y);) ja suoritat ohjelman. Kun suoritus osuu keskeytyskohtaan, käytät step-komentoa. Mihin suoritus pysähtyy seuraavaksi?
Kertaus: keskeytyskohdat ja askellus
Olet oppinut, miten keskeytyskohdat pysäyttävät ohjelman suorituksen tietyissä kohdissa, jolloin voit tarkastella sen tilaa. Käsittelimme seuraavat asiat:
- Keskeytyskohdat: koodin ”stop-merkkejä”.
- Suoritus keskeytyskohtaan asti: pysäyttää suorituksen halutuissa kohdissa.
- Askellus: koodin suorittaminen rivi riviltä.
- Step Over (
next): suorittaa funktiokutsut kokonaan. - Step Into (
step): siirtyy funktiokutsujen sisään. - Step Out (
finish): poistuu nykyisestä funktiosta.
Näiden debuggerikomentojen hallitseminen on olennaista tehokkaan dynaamisen analyysin ja käänteistekniikan kannalta!
Opi Assembly tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Keskeytyskohtien asettaminen ja askellus” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Keskeytyskohtien asettaminen ja askellus”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Keskeytyskohtien asettaminen ja askellus”?
Hallitkaa keskeytyskohtien käyttö suorituksen pysäyttämiseen sekä ohjelman kulun jäljittäminen askel askeleelta. Harjoittelet Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Keskeytyskohtien asettaminen ja askellus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunnilla?
Kyllä. Jokainen Ohjelmistojen käänteinen suunnittelu ja binäärien analysoinnin perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Debuggerien perusteet (GDB, WinDbg)
- Keskeytyskohtien asettaminen ja askellus
- Muistin ja rekisterien tarkastelu
- API- ja järjestelmäkutsujen jäljitys ajon aikana