Øvelse+9.2+-+Debugging

Exercise 1:
Compiling: Optimering fjernes med -O0 kommando, og debug informationer tilføjes med -g code format="c" g++ -o main -O0 -g main.cpp code Derefter gøres følgende
 * gdb startes: gdb ./Applikation
 * Breakpoint indsættes: b [funktionsnavn] -- eller b [fil og linjenummer].
 * Programmet exekveres indtil breakpoint: r
 * programmet fortsættes en linje ad gangen: n

Exercise 2:
DDD minder meget om GDB, bare grafisk.

Følgende segfault indsættes code format="cpp" int * p = 0;
 * p = 1;

code Debugging startes: sudo ddd ./segfault

ellers løbes samme trin igennem med ddd der virker som gdb, det er bare en del nemmere at sætte brakepoints på grund af den grafiske brugerflade.

Ganske rigtigt findes der en seqfault.

Exercise 3:
Øvelsen gentages med samme kode som før, denne gang benyttes der dog coredump

ulitmit -c unlimited Derefter compiles som i opgave 1 programmet køres, hvilket selvfølgelig giver en seg fault coredumpen læses med gdb ./segfault core

Herved forkommer terminerings grundlag: seqfault

og linjenummer.

På den måde er det let at finde grunden til segmentation fault.

Exercise 4:
Via en gdbserver sættes crossdebugging op dom beskrevet i [|Preparing for cross debugging.pdf]

På den måde kan de forgående øvelser gentages på taget, hvor vi via vores host kan finde segfaulten.

Exercise 5:
Først installeres valgrind

Nu bruges kommandoen: Til at tjekke efter memoryleaks
 * valgrind –tool=memcheck –leak-check=full**

Desuden bruges Til at find tråd-relaterede problemer.
 * valgrind –tool=helgrind**

Erfaringer:
Den vigtigste erfaring er gjort i denne øvelse er cross-debugging, på den måde kan vi debugge direkte på target, og dette er meget brugbart specielt i forbindelse med semesterprojektet.