I am sorry, may be didn't explain this clearly.
The debugger is reporting only 9 calls and stopped at TApplication.ProcessMessage , this call explicitly means there is more to it and it could be helpful or it could be not, but that is not up to the debugger to decide, it should go deeper, you already pasted two stacks report, so why one is over 50 walked and the real needed one with an
exception is stopped/cut at 9 ?
You seem to have a serious misunderstanding of how the call stack works. In a
VCl app practically all code in the main thread is executed in response to a posted message, so the base of the call stack is TApplication.ProcessMessage, at least all the code flow interesting for debugging starts from there. There are a few instruction below that point, which get executed during program startup. but the flow never returns to them until the program is terminated. In the case of the
exception stack the path from ProcessMessages to the
exception was short, so the call stack shown has few entries. In the case of the breakpoint in OnClose the path was much longer from ProcessMessages to the breakpoint.