Stack overflows occur when you run out of memory on the call stack. Each function your program calls gets placed on the stack. If your program is using recursion, the recursing function gets put on the stack every time it calls itself until some condition is met. Once the condition is met, the stack unwinds and frees memory while doing so. So, a typical cause of a stack overflow is infinite recursion.
If the terms 'stack' and 'recursion' are foreign to you, Google them for a better understanding.
"Break" is a debugger command to stop the executing program at its current instruction.