Настройка: у меня есть неуправляемое / собственное приложение Win32, в которое я внедряю свой код.Мой код в основном управляется, написан на C ++ / CLI и скомпилирован как DLL.Мой загрузчик / инжектор исправляет код запуска приложения crt0 (в основном заменяет вызов функции точки входа на один с LoadLibrary).При подключении к хост-процессу DLL загружает в память несколько компонентных DLL (сама внедренная DLL записывается в неуправляемом коде, только управляемые сборки являются только компонентными DLL) и исправляет различные области памяти, выступая в качестве интерфейсов для библиотек компонентов.
Теперь мой код в компонентных DLL, похоже, вызывает утечку памяти [как упомянуто в Надлежащее удаление объектов в C ++ / CLI ], и я пытался отладить его с помощьюИнструмент профилирования памяти .NET.К сожалению, мое необычное окружение мешает полному использованию инструмента.Попытка присоединить профилировщик к процессу приводит к тому, что он сообщает, что для процесса включен одновременный сборщик мусора, что не позволяет ему использовать свой внутренний API для отслеживания ссылок и т. Д.
Я попытался создать конфигурациюфайл, чтобы отключить этот режим GC, но он, кажется, не имеет никакого эффекта - профилировщик продолжает отображать сообщение об ошибке (я предполагаю, что это потому, что приложение хоста является в основном нативным и, следовательно, не анализирует файл конфигурации при запуске).Я также попытался изменить файл machine.config, напрасно.
Был бы какой-нибудь другой способ принудительно отключить одновременный сборщик мусора?