While debugging an executable using gdb, there are two commands which we can use to step through the execution:
stepiandnexti
What is/are the difference/s between these two and why would anyone choose one over the other?
using help in gdb says:
stepi: Step one instruction exactly.
nexti: Step one instruction, but proceed through subroutine calls.
since we are dealing with instructions and machine code here (the smallest part of a program in execution) I can't figure out what the subroutine calls are.

