Dr. Ammorth recommends Jass New Gen Pack. It has debugging that can pin-point crashes and the like to functions and calls within a function. Check it out.
You can use ExecuteFunc or trigger actions to run stuff in new threads to prevent thread crashes (and yes, Grimoire is indeed most useful for picking up such problems).
Ya, I figured out the triggerexecute workaround, but I was just curious on how to know when you have too much. I will get grimoire, but just for my info ya know.