Я не знаю ничего такого, что записывало бы каждое значение, когда-либо присвоенное каждой переменной в вашей программе, на случай, если вы захотите взглянуть на нее позже. С историческими способностями отладки VS2010 можно посмотреть на «ценности из прошлого», хотя я еще не использовал это, поэтому я не знаю, распространяется ли эта способность «за пределы смерти» процесса.
Вы также можете использовать точки трассировки (VS2008 и более поздние версии). Это как точки останова, но вместо остановки выполнения они просто выводят информацию в выходные данные отладки. Таким образом, вы можете добавить точку трассировки для переменной, чтобы при каждом ее изменении сообщалось о ее значении (в основном это то же самое, что распечатывать значения в вашем коде, но вам не нужно менять код, чтобы включить их, и вы можете их во время выполнения вашего кода).
Два простых подхода, которые будут работать практически для любой среды разработки:
Записывать значения в журнал приложения каждый раз, когда они меняются, а затем читать последние зарегистрированные записи. Если вы понимаете, что вам нужно 5 значений по всей программе, просто распечатайте их в выходные данные отладки, чтобы добавить в вашу программу всего несколько секунд. (Если вы не можете сделать это легко, значит, вы не очень хорошо инкапсулируете свои данные).
Поместите точку останова на деструктор интересующего вас класса или в начало процесса выключения непосредственно перед тем, как уничтожить объекты, или последнюю строку кода в вашей программе (для статики) ( и т.д.) и просто используйте отладчик для детализации данных.