-g3 hash gdb

2026-10-13

unsigned hash(char *s)
{
    unsigned hashval;

    for (hashval = 0; *s != '\0'; s++)
        hashval = *s + 31 * hashval;
    return hashval % HASHSIZE;
}

b hash
run
n
p *s
p hashval
n
n
p *s
p hashval
n
n
p hashval
p hashval % HASHSIZE


gcc -Wall -Wextra -g3 cc-c.c -o cc-c
win@DESKTOP-MEIH88T:~/webdev-projects$ gdb -q ./cc-c
Reading symbols from ./cc-c...
(gdb) b hash
Breakpoint 1 at 0x13f0: file cc-c.c, line 98.
(gdb) run
Starting program: /home/win/webdev-projects/cc-c
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, hash (s=0x55555555600a "IN") at cc-c.c:98
98          for (hashval = 0; *s != '\0'; s++)
(gdb) p *s
$1 = 73 'I'
(gdb) p hashval
$2 = 0
(gdb) n
99              hashval = *s + 31 * hashval;
(gdb) n
98          for (hashval = 0; *s != '\0'; s++)
(gdb) p hashval
$3 = 73

(gdb) p *s
$4 = 73 'I'
(gdb) n
99              hashval = *s + 31 * hashval;
(gdb) n
98          for (hashval = 0; *s != '\0'; s++)
(gdb) p hashval
$5 = 2341
(gdb) n
100         return hashval % HASHSIZE;
(gdb) p hashval % HASHSIZE
$6 = 18