Open Menu: View > IDE internals > Debug Output.
Then when you switch units, check if there is any output added to that Window.
Also check if disabling (power button off) for stack or watches makes a different.
In order to test that, first open the "Debug > History" Window and switch its power button to off.
There was an issue where the stack (if it showed lots of entries) would be slow to resolve the files listed in the stack (even if the stack already was shown and not changed). Though that was fixed (at least as far as I was able to test) before 4.0RC
Also, about "sometimes": Check if that "sometimes" is the first time you switch to that unit, during the debug session.
When you switch to a unit, and that unit had not yet been "switched to" since the debugger was started (including already switched to at the time the debugger started), then the IDE loads the "blue dots". If your app is massive then it needs to go through a lot of debug-info (IIRC on Mac, it needs to locate all involved .o files, and check each of them).
Mind that foo.o can contain lines for bar.o, if foo specializes a generic that is from bar. Since the debugger can not know if that happened during compilation, it must check all .o files.
On other OS the entire info is usually in a single file (either the exe, or a dbg file).
It's been a while since I looked at Mac details, but afaik on Mac the info is spread across lots of individual files. So if you have 1000 files that all have debug info, then the debugger needs to open them all.
Though (if memory serves), it should read them once, and keep line info in memory. But not sure....
Mind that the debugger does need some amount of memory. So if you are low on memory, it likely needs to swap a lot.
Also, please confirm you are using "LLDB with FpDebug"