-
chevron_right
Debugger - backtrace
pubsub.movim.eu / devlug • 30 November 2025
Wir nehmen als Beispiel folgendes Programm.
#include <stdio.h>
#include <stdlib.h>
int f(int n) {
if (n == 0)
return 1;
return n * f(n - 1);
}
int main(int argc, char *argv[]) {
if (argc < 2) {
return EXIT_FAILURE;
}
int n = atoi(argv[1]);
printf("f(%d) = %d\n", n, f(n));
return EXIT_SUCCESS;
}
Kompiliert wird es wieder mit der -g-Option.
gcc -g -o demo1 demo1.c
Wir starten das Programm im Debugger gdb --args ./demo 8 und setzen direkt ein break auf die f-Funktion.
(gdb) break f
Breakpoint 1 at 0x1154: file demo1.c, line 5.
Lässt man das Programm eine paar Schritte laufen, kommt folgendes raus:
(gdb) bt
#0 f (n=3) at demo1.c:7
#1 0x000055555555516e in f (n=4) at demo1.c:7
#2 0x000055555555516e in f (n=5) at demo1.c:7
#3 0x000055555555516e in f (n=6) at demo1.c:7
#4 0x000055555555516e in f (n=7) at demo1.c:7
#5 0x000055555555516e in f (n=8) at demo1.c:7
#6 0x00005555555551b0 in main (argc=2, argv=0x7fffffffe1d8) at demo1.c:15