How can I step through nested function calls in GDB?

What command are you stepping with? next would go to next line when debugging my_func1(my_func2(my_func3(val)));, but step should enter my_func3. Example:

int my_func1(int i)
{
  return i;
}

int my_func2(int i)
{
  return i;
}

int my_func3(int i)
{
  return i;
}

int main(void)
{
  return my_func1(my_func2(my_func3(1)));
}

Debugged:

(gdb) b main
Breakpoint 1 at 0x4004a4: file c.c, line 19.
(gdb) run
Starting program: test

Breakpoint 1, main () at c.c:19
19    return my_func1(my_func2(my_func3(1)));
(gdb) step
my_func3 (i=1) at c.c:14
14    return i;
(gdb) step
15  }
(gdb) step
my_func2 (i=1) at c.c:9
9   return i;
(gdb) step
10  }
(gdb) step
my_func1 (i=1) at c.c:4
4   return i;
(gdb) step
5 }
(gdb) step
main () at c.c:20
20  }
(gdb) cont
Continuing.

Program exited with code 01.
(gdb)

Tags:

Gdb