セットアップ:コードを挿入するアンマネージ/ネイティブのWin32アプリケーションがあります。私のコードは主に管理され、C ++ / CLIで記述され、DLLとしてコンパイルされています。私のローダー/インジェクターは、アプリケーションのcrt0スタートアップコードにパッチを適用します(基本的に、エントリポイント関数への呼び出しをLoadLibraryへの呼び出しと交換します)。ホストプロセスに接続すると、DLLはいくつかのコンポーネントDLLをメモリにロードし(挿入されたDLL自体はアンマネージコードで記述され、コンポーネントDLLのみがマネージアセンブリです)、コンポーネントDLLへのインターフェイスとして機能するようにさまざまなメモリ位置にパッチを適用します。
現在、コンポーネントDLLのコードがメモリリークを引き起こしているようです[ C ++ /CLIでの適切なオブジェクトの破棄で説明されています]。.NETメモリプロファイラーツールを使用してデバッグを検討しています。残念ながら、私の異常な環境はツールの完全な使用を妨げます。プロファイラーをプロセスにアタッチしようとすると、プロセスで同時GCが有効になっていることが報告され、内部APIを使用して参照などを追跡できなくなります。
そのモードのGCを無効にする構成ファイルを作成しようとしましたが、効果がないようです-プロファイラーは引き続きエラーメッセージを表示します(これは、ホストアプリが主にネイティブであるため、生成されないためだと思います)起動時に構成ファイルを解析します)。また、machine.configファイルを変更しようとしましたが無駄でした。
同時ガベージコレクターを強制的に無効にする他の方法はありますか?