Virheenkorjaus
Valmistele koodi virheenkorjausta varten
Jotta käytettävissä olisi täydet virheenkorjaustiedot, kiinnostuksen kohteena oleva ohjelma täytyy yleensä kääntää uudelleen siten, että virheenkorjauslippu (-g) on käytössä. Esimerkiksi GNU-kääntäjällä:
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.
Jotta voit käyttää Valgrindia, valmistele ympäristö normaalisti koodisi vaatimalla tavalla ja käännä koodi uudelleen siten, että virheenkorjauslippu (-g) on lisätty.
Analyysin ajaminen Valgrindilla on yksinkertaista, ja sen voi tehdä joko interaktiivisessa istunnossa tai ajoon jätettynä työnä. Interaktiivisessa istunnossa käytettävä komento on valgrind ./myprogram, kun taas ajoon jätetyssä työssä komento on srun valgrind ./myprogram.
Esimerkiksi muistivuotojen tarkistaminen interaktiivisessa istunnossa:
Jos haluat ajaa saman analyysin tavallisena ei-interaktiivisena työnä, esimerkiksi rinnakkaisohjelmaa virheenkorjatessa, 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:
- Arm DDT on virheenkorjain sarjallisille ja rinnakkaisille ohjelmille (MPI, OpenMP, CUDA), ja siinä on sekä graafinen käyttöliittymä että komentorivikäyttöliittymä
- 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