我如何找到引发EETypeLoadException异常的原因?

10

我有一个运行在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。

1个回答

3

看起来在WinRT(即不是.net CLR)中由本机代码引发的EETypeLoadException没有携带任何额外信息,也无法获取有关具体失败原因的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接