カバレッジ情報を収集するために、VSTS VSinstrツールを使用してプログラムをインストールしています。しかし、インストルメントされたバイナリ、特に私のCOM dllの1つを実行している間、私のプログラムは常に終了ポイントでクラッシュします。COM DLLがアンロードされ、ロックカウンタはまだ0以外です。
私はクラッシュが原因で発生していることを見つけるためにデバッグする:まず、私はcoLoadLibrary(bAutoFree = TRUE)と私のCOM DLLをロード
- 。
- 私のプログラムはいくつかの仕事をします。
- が終了ポイントに来ました。
- そして、私のCOM DLLがアンロードされます。 WINDBGは、そのDllMainがdwReason == DLL_PROCESS_DETACHで呼び出されたことを示します。
- 私のCOM dllのコードが実行され、アクセス違反(コードc0000005)が発生します。私が混乱させる原因は、現時点では_AtlModule.m_nLockCntの値が2に等しいことです!
なぜCoCreateInstanceの代わりにCoLoadLibraryを呼び出していますか?あなたはCoFreeLibraryを呼び出していますか? –