STM32CubeIDE: Why does Serial Wire Viewer show Unknown Function?
Compilers will inline functions if their call-chain is trivial, so that it looks like your function doesn't exist
Sometimes, that can also lead to emission of "anonymous functions"
A debugger can't know in what function it is if the stack frame isn't set up in a way the debugger understands. That's a common problem with interrupt handlers, or if you're using an operating system on your target that the debugger doesn't understand.
Your "delay" is quite possibly not a time spent in that function, but actually a call to the RTOS to commence execution at that point in 500 ms and do something else or go to sleep in the meantime. 
_fini is a function name that you find in UNIX-targetting shared libraries. It's what the runtime loader calls before it tries to unload a shared library. I'm pretty sure you don't have shared libraries on an STM32, so that symbol should not exist. You're probably not using the right linker scripts and the wrong EABI for your compiler. Have you perhaps been trying to link against some shared library by accident? For example the fully-fledged libc?