Hyppää sisältöön

Virheenkorjaus

Valmistele koodi virheenkorjausta varten

Jotta saadaan täydet virheenkorjaustiedot, kiinnostuksen kohteena oleva ohjelma täytyy yleensä kääntää uudelleen debug-lippu (-g) käytössä. Esimerkiksi GNU-kääntäjällä:

gcc -g -o example example.c

Muistivuodot

Hyvä aloituskohta on tarkistaa muistivuodot Valgrindilla. Se on monipuolinen työkalu, jota käytetään yleisimmin koodin muistivuotojen havaitsemiseen, mutta sitä voidaan käyttää myös esimerkiksi säikeistyksen virheiden tunnistamiseen tai keon ja välimuistin käytön tutkimiseen.

Valgrindin käyttöä varten ympäristö valmistellaan normaalisti koodin vaatimalla tavalla ja koodi käännetään uudelleen siten, että debug-lippu (-g) on lisätty.

Analyysin ajaminen Valgrindilla on yksinkertaista, ja sen voi tehdä joko interaktiivisessa istunnossa tai lähetettynä työnä. Interaktiivisessa istunnossa käytettävä komento on valgrind ./myprogram, kun taas lähetetyssä työssä komento on srun valgrind ./myprogram.

Esimerkiksi muistivuotojen tarkistaminen interaktiivisessa istunnossa:

valgrind ./example

Saman analyysin ajamiseen tavallisena ei-interaktiivisena työnä, esimerkiksi rinnakkaisohjelmaa virheenkorjattaessa, käytettävä komento on srun valgrind ./example.

Virheenkorjaimet

Täysimittaisia virheenkorjaimia tarvitaan usein, jotta voidaan todella perehtyä koodin suoritukseen ja ratkaista ajonaikaisia virheitä. CSC:llä on saatavilla useita virheenkorjaimia:

  • GDB on komentorivikäyttöliittymässä toimiva virheenkorjain käännetyille ohjelmille (C, C++, Fortran jne.)
  • PDB on interaktiivinen virheenkorjain Python-ohjelmille
  • CUDA-GDB on komentorivikäyttöliittymässä toimiva virheenkorjain CUDA-ohjelmille
  • compute-sanitizer on komentorivikäyttöliittymässä toimiva toiminnallisen oikeellisuuden tarkistustyökalujen kokonaisuus
Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .