I mostly use GUI-based debuggers (and profilers), but even in this case I found it often useful to pause the program at random times when it appears "stuck".
Most of the time I don't event need to reach for a profiler proper.
Most of the time I don't event need to reach for a profiler proper.