Same as Chris, I have seen this problem before.
I think that you are successfully programming the flash on your board - JLink is good for this. 3 possible sources for the error that you described:
1) Code for the CM4 must be aligned to 2-byte boundaries. This means that all instructions must be aligned to an even address. The compiler will make certain of this for you. However, the reset vector at address 0x0000_0004 must be ODD. This is because the address is used to signify to the core that the THUMB instructionset is being used. Check with a debug setting that the value in address 0x0000_0004 is ODD. In my example code, the program starts at address 0x0000_04d8 but the rest vector is '04d9. The debugger normally overrides the reset vector and so it masks the problem.
2) Could be a clock configuration issue - debugger may set up the clock for you, but when you run stand-alone, the code hangs up in a while() loop waiting for the PLL to lock or something similar.
3) The debugger is doing something that your code does not do. Normally the JLINK runs a script when it connects to the target - my CW10.3 JLINK project here runs a script:
${ProjDirPath}/Project_Settings/Debugger/init_kinetis.tcl
Check to see if the script is doing something that your code should be doing.
Good luck!
Mark