Ed
I loaded your code to my TWR board and I am 99% sure it is due to the watchdog not being configured early enough.
Your code starts at 0x0439 (the first instruction executed) and the very first thing that it does is initialise variables. In this case it has 0x970 variables to be initialised (this is a loop copying const values from Flash at 0xd6e8 to the RAM area 0x1fff0410..0x1fff0d80 [initialised variables]). In fact it copies always long words starting at the end of the area and working backwards.
If a breakpoint is set "after" this loop [address 0x44a] it will never be reached - there is a reset before it gets that far.
If a memory fill is performed in the RAM area before starting it is seen that the loop manages to copy 32 long words before the reset takes place since the FLASH values are seen to have been written there).
When working with the debugger the results can be a bit different - by setting a breakpoint in the loop itself it was in fact possible to run to the break point in each loop cycle and it managed many loops without the reset taking place.
I didn't see any code that configures the watchog (there is a routine called monWatchDog but looks to not be doing any initialisation). Therefore I couldn't try jumping to code that disables the watchdog and then jumping back to the initialisation to see whether the code then actually ran successfully. Since the requirements for unlocking and disabling the watchdog are very critical it is not posssible to do it manually.
Using code that initialises variables before configuring the watchdog may work if there are only a few variables to be initialsied but when the operation exceeds the 256 allowed instructions it would then fail (eg. when a few more variables are added).
I can't explain why the debugger allows the code to operate but, as stated above, I believe the only way to do this is to put the watchog initisation "before" any variable initialisation since it is "normal" (from experience and written references) that if the 256 instructions are used up the watchdog will fire and so the code can't operate.
Regards
Mark