设置:我有一个非托管/本机 Win32 应用程序,我将代码注入其中。我的代码主要是托管的,用 C++/CLI 编写并编译为 DLL。我的加载器/注入器修补了应用程序的 crt0 启动代码(基本上将对入口点函数的调用与对 LoadLibrary 的调用交换)。在附加到宿主进程时,DLL 将几个组件 DLL 加载到内存中(注入的 DLL 本身是用非托管代码编写的,只有组件 DLL 是托管程序集)并修补各种内存位置以充当组件 DLL 的接口。
现在,我在组件 DLL 中的代码似乎触发了内存泄漏 [如C++/CLI 中的正确对象处理中所述],我一直在研究在 .NET 内存探查器工具的帮助下对其进行调试。不幸的是,我不寻常的环境阻碍了该工具的充分使用。尝试将分析器附加到进程会导致它报告已为该进程启用了并发 GC,这会阻止它使用其内部 API 来跟踪引用等。
我试图创建一个配置文件来禁用该 GC 模式,但它似乎没有效果 - 探查器继续显示错误消息(我假设这是因为主机应用程序主要是本机的,因此不会在启动时解析配置文件)。我也尝试过修改 machine.config 文件,但徒劳无功。
是否有其他方法可以强制禁用并发垃圾收集器?