Once the program detects that we have stepped into another function, we simply calculate the return address and then set a breakpoint and continue to that location, avoiding numerous syscalls.