What you describe should be the normal way to get an application working (in debug mode).
Once you are stopped at main, you can normally launch the execution, then select your application in the main menu and stop within your application if you have set a breakpoint.
I don't understand why you are facing this problem, but the only solution I see would be to debug with the source files of CircleOS (at least to check the initialization stage in CircleOS).
What I suggest:
1. Install the source files of CircleOS and compile them (build Primer2_circle.elf).
2. In your application, replace the default \RIDE\LIB\ARM\CircleOS\primer2_circle.elf by the same file resulting of the previous build.
3. Now, when you will launch your application, you will be able to follow the execution (and to step at the C level) in the main function of CircleOS. I hope you will see where/why the execution fails.