When the program stops, look at which statement it stopped at. What was it doing, or trying to do, then?
I find it very helpful to browse the VCL source-code to look for that actual message -- it will be a constant -- then look for occurrences of that constant. Some messages are cryptic, but they were generated by the VCL somewhere and you can read that code. Very, very helpful.
Sometimes you can stop the program right before the statement that you know will cause the error, then "step into" it and actually watch the execution flow through the VCL until the point where the error is raised.