Breakpoints are a lot more powerful than one may suspect. Breakpoints don't need to even interrupt the execution of the program (or brake it, but then they'd be called brake-points).
Rather, they are instructions to Xcode (and the OS beyond) as to what to do when the program's execution reaches a certain point; these are instructions that can be a simple as pausing the program, right up to executing bash and Python scripts and whatever other actions we may choose to attach to them.
One great advantage of breakpoints in Xcode is that they are local to the user; they can do many things that code can do, without being part of the program, and thus they are suitable for all manner of tasks that don't need to ship with an app, or be included for other developers working on the same code.
Logging, for example, can be a real pain when it's somebody else's mountain of...