Mindtraveller Messages: 917 Registered: August 2007 Location: Russia, Moscow rgn.
Experienced Contributor
Sometimes you have crash and have no idea what really led program to the exception. Let`s imagine we have a debug version of our program running with debug version of memory mamanger, which "knows" where and which variables are situated. Let`s imagine we have a background thread which is continiously passing all the variables making their snapshots i.e. once per 50 milliseconds. This thread keeps "history" with something about 100 snapshots per variable.
So the idea is, when exception is executed, memory manager does some analysis. Analysis covers all the variables. If variable isn`t changed through it`s history, it is thrown out from list. More variable is changed through it`s history, closer to top it is. In the end we will have something like "crash story" with top variables from list, which most likely led to the exception.