Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti will be decommissioned after Roihu becomes available. Users should clean up unnecessary files and move any required data by the end of August 2026. See the Roihu data preparation instructions for details.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

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