Virheenkorjaus
Valmistele koodi virheenkorjausta varten
Jotta saadaan kaikki virheenkorjaustiedot, ohjelma täytyy yleensä kääntää uudelleen virheenkorjauslipun (-g
) kanssa aktivoituna. Esimerkiksi GNU-kääntäjällä:
Muistivuodot
Hyvä paikka aloittaa, on tarkistaa muistivuodot Valgrindilla. Se on monipuolinen työkalu, jota käytetään yleisimmin koodin muistivuotojen havaitsemiseen, mutta sitä voidaan käyttää myös esim. säikeitysvirheiden tai kasan ja välimuistin käytön tutkimiseen.
Jotta voit käyttää Valgrindia, aseta ympäristö tarvittavaksi koodillesi normaalisti ja käännä koodi uudelleen virheenkorjauslipun (-g
) lisättynä.
Valgrind-analyysin suorittaminen 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, tarkistaaksesi muistivuodot interaktiivisessa istunnossa:
Jotta saman analyysin voi suorittaa normaalina ei-interaktiivisena työnä, esim. debuggattaessa rinnakkaisohjelmaa, käytettävä komento on srun valgrind ./example
.
Debuggerit
Täysimittaisia debuggaustyökaluja tarvitaan usein koodin suorittamisen tarkkaan tutkimiseen ja suoritusajan virheiden ratkaisemiseen. CSC:llä on saatavilla useita debuggaustyökaluja:
- Arm DDT on debuggertyökalu sarjallisia ja rinnakkaisohjelmia (MPI, OpenMP, CUDA) varten ja siinä on sekä graafinen että komentoriviliittymä
- GDB on komentorividebuggertyökalu käännetyille ohjelmille (C, C++, Fortran, jne.)
- PDB on interaktiivinen debuggertyökalu Python-ohjelmille
- CUDA-GDB on komentorividebuggertyökalu CUDA-ohjelmille
- compute-sanitizer on komentorivitoiminnallisuuden tarkistustyökalupaketti