Я искал инструмент для отладки невыпущенных ссылок COM, которые обычно вызывают, например, Процессы Word / Outlook зависают в памяти, если код неправильно вызывает Marshal.ReleaseCOMObject
на всех экземплярах COM. (Outlook 2007 частично исправляет это для надстроек Outlook, но это общий вопрос).
Существует ли инструмент, который отображал бы хотя бы список ссылок COM (по типу), содержащихся в управляемом коде? В идеале он также отображал бы деревья объектов в стиле профилировщика памяти, помогая отлаживать там, где ссылка произошло увеличение.
Отладка во время выполнения не так важна, как возможность присоединиться к зависшему процессу - потому что проблема обычно возникает, когда код выполняется с помощью интерфейса COM, и кто-то забыл что-то выпустить - приложение (например, winword) зависает в памяти даже после завершения вызова управляемого приложения.
Если такого инструмента не существует, в чем (техническая причина) причина? Это было бы очень полезно для отладки многих других проблем, которые трудно найти при работе с COM-взаимодействием.