Si todo va bien en modo Debug, y no hace nada en modo normal, solo se me ocurre que el circuito del oscilador está mal conectado o mal configurado.
En modo Debug tengo entendido que la señal de reloj la envía el PC por JTAG o SWD, para poder controlar paso a paso la ejecución del programa. En modo normal, es el oscilador del micro el que debe de generar la señal de reloj.
Comprueba que tienes bien conectado el cuarzo, con sus dos condensadores a masa (unos 20pf), en mis circuitos con el F407 también hay una resistencia en serie con una de las patillas del cuarzo (creo que es necesaria para cuarzos que no superan los 8Mhz). Y mira también la configuración del oscilador en Cubemx, que la frecuencia se corresponda con la del cuarzo y que tengas bien configurado el PLL y las frecuencias de reloj para todos los buses.
Comprueba también que tienes conectadas correctamente las dos patillas, BOOT0 y BOOT1 (ambas a masa), para que el programa arranque desde la flash del microcontrolador. Si habilitas el modo Boot, con un jumper o un pulsador en Boot0, podrías cargar el programa en el micro sin necesidad de programador, puede venir bien en montajes caseros que no necesitan una protección comercial, para actualizarlo con rapidez.
La patilla NRST supongo que la tendrás bien conectada, al aire o a positivo con una resistencia de pullup para poder programar y hacer debug al micro.
En cuanto a la configuración que mencionas para generar el objeto, yo nunca he necesitado configurar nada en Eclipse ni en Cubemx, para que me genere el BIN que puedo grabar sin problemas con el programador ST-LINK V2.