我有一个运行在Windows 8.1 WinRT(现代/元素)架构下的应用程序,它部分由本机C++和部分由.NET(C#)组成。
在某些时候,C++ 部分会调用一个被设置为 C# 方法的委托,在调用此委托时,会抛出 EETypeLoaderException 异常并且方法不会被调用。我想要找出这个失败的原因。
该委托所指向的方法在已经加载的 .NET 程序集中,来自此程序集的代码以及具有将要被调用方法的相同类 - 可能正在另一个线程上运行 - 已经执行过。
EETypeLoadException 是一种本地未经管理的异常,由非托管代码抛出(在 msvcr120_clr0400.dll 中),我只能使用非托管调试器查看它,并且该调试器无法显示来自异常的数据,因为它不知道 EETypeLoadException 类。
我无法在代码中捕获异常并从中提取数据,因为我没有它的头文件或任何其超级类。
融合日志查看器 (FUSLOGVW) 没有显示任何有用的信息,没有绑定错误,成功的绑定看起来与此问题无关。
Procmon 没有显示任何尝试访问丢失的 dll 的迹象。
将代码运行在 UI 线程或后台任务上都没有改变任何事情。
我甚至尝试查看异常对象的内存转储,并跟随任何像指针一样的东西,但找不到错误消息。
这种情况发生在本地机器和模拟器上。
我使用的是 Windows 8.1 机器上的 Visual Studio 2013 更新 3。