あいまいな主題で申し訳ありませんが、私はこの分野に不慣れで、より具体的なものを思いつくことができませんでした.
COM プラグインをロードするサードパーティ アプリケーション (VC++ 2005 で記述) をデバッグしています。私のプラグインは C# 4.0 で書かれています。プラグインの特定のメソッドが呼び出されると、アプリケーションがクラッシュしますが、かなり役に立たないコール スタックが表示されます。
151f0d2d()
clr.dll!_COMToCLRDispatchHelper@28() + 0x28 bytes
clr.dll!BaseWrapper<Stub *,FunctionBase<Stub *,&DoNothing<Stub *>,&StubRelease<Stub>,2>,0,&CompareDefault<Stub *>,2>::~BaseWrapper<Stub *,FunctionBase<Stub *,&DoNothing<Stub *>,&StubRelease<Stub>,2>,0,&CompareDefault<Stub *>,2>() + 0x175b8b bytes
clr.dll!COMToCLRWorkerBody() + 0x80 bytes
clr.dll!COMToCLRWorkerDebuggerWrapper() + 0x34 bytes
clr.dll!_COMToCLRWorker@8() + 0x12b bytes
これは、CCW に関連する問題があることを示していると思います。クラッシュの時点でアプリケーションがプラグインで呼び出すはずのメソッドも、実際には呼び出されません。NotImplementedException をすぐにスローするようにプラグインを変更しましたが、スローされません。ただし、同じインターフェイスの別のメソッドを変更して NotImplementedException をスローすると、アプリケーションはそのエラーを適切に報告します。
さらなるデバッグ戦略を推奨できる人はいますか?