Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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ä:

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.

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:

module load valgrind

valgrind ./example

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

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta