A step is not necessarily a source line

A debugger can remain on the same source line while the instruction address changes. DBG Desk uses instruction-level controls for F7 and F8. A statement such as total += value may load data, calculate a result, and write it back in several instructions. Optimized code can also combine or move source operations. Use the program counter and current assembly row to identify the actual execution position, rather than assuming that every key press advances one line in the editor.

Step into to inspect a call

Step into executes the next instruction. At a call, this can enter the called function. It is useful when the function receives correct input but produces an incorrect result. Following every instruction from process startup, however, can take you deep into initialization code or libraries before reaching your own code. Unknown function names do not automatically indicate a bug. Set a breakpoint in a relevant function first, run to it, and then step through the calculation you need to inspect. Without symbols, addresses and instruction behavior become the main clues.

Step over when the result is enough

Step over runs a call without asking you to follow its internal instructions. The function still executes and must return before the requested next location is reached. A function waiting for input or looping indefinitely can make Step over appear to hang. Another breakpoint or a signal can also stop the target before that location. Use this control when you provisionally trust a library or helper and want to inspect its result in the caller. If the result is wrong, return to that boundary in a new run and investigate inside.

Step out executes until return

Step out asks GDB to finish the current function and return to its caller. It is useful after entering a function accidentally, or when you need to see how a return value is used. It is an execution command, not merely a change of displayed frame. File writes, network activity, and other effects can happen while it runs. Reading a parent frame in a stack view is a different operation. Start with a small function to learn how entry, return, and the stack correspond.

Compare two sessions

Stop immediately before the same call in two runs. In one, use F7 and watch the called function appear on the stack. In the other, use F8 and inspect the returned result. Both routes execute the calculation; the scope of observation differs. If the result in the caller matches, the observations are consistent. Use disposable input for programs with external effects, since going back to an earlier view cannot undo an executed operation.

Equivalent GDB console commands
stepi   # Step into
nexti   # Step over
finish  # Step out