Я думаю, что старые добрые журналы помогут вам. Добавьте некоторые записи в каждую единицу finalization
, добавьте такую запись в деструкторы глобальных данных (соединение с базой данных, глобальная конфигурация и т. Д.). Конечно, не уничтожайте объект логгера.
Если ваше приложение является многопоточным, добавьте в рабочие потоки некоторые записи, такие как запись «[date] thread [name of class] working», и записывайте его каждые несколько секунд (вы можете использовать режим отладки). Также добавьте ведение журнала, когда поток обнаруживает, что он должен завершиться.
Также используйте некоторые системные утилиты, такие как ProcessMonitor, Handles, Process Explorer (все от Sysinternals / Microsoft). Мониторинг чтения / записи диска, количество обращений, использование памяти, сетевые подключения. Может быть, ваше приложение выводит некоторые большие структуры на диск при выходе? Может быть, он выделил много памяти и должен освободить его?