我有一个Windows 8.1 WinRT(现代/地铁)应用程序,该应用程序部分是 native C++,部分是.net(C#)

在某些时候,C++部分正在调用设置为C#方法的委托(delegate),当此委托(delegate)被称为EETypeLoderException且未调用该方法时,我想找出导致此失败的原因。

委托(delegate)指向的方法在已经加载的.net程序集中,该程序集中的代码以及具有所谓方法的同一类已经运行(并且可能正在该线程的另一个线程中运行)。引发异常的时间)

EETypeLoadException是 native 非托管异常,它是由非托管代码(在msvcr120_clr0400.dll中)引发的,我只能使用非托管调试器进行查看,并且该调试器无法向我显示该异常的数据,因为它不知道关于EETypeLoadException类。

我无法捕获异常并在代码中从中提取数据,因为我没有该异常或其任何父类(super class)的头文件。

融合日志查看器(FUSLOGVW)没有显示任何有用的信息,没有绑定(bind)错误,成功的绑定(bind)看起来并不相关。

Procmon没有显示任何访问丢失的dll的尝试

使代码在UI线程或后台任务上运行不会改变任何内容。

我什至尝试查看异常对象的内存转储,并跟随任何看起来像指针的内容,找不到错误消息。

这在本地计算机和模拟器中均会发生

我在Windows 8.1机器上使用Visual Studio 2013 Update 3

最佳答案

看起来WinRT中的 native 代码(即不是.net CLR)抛出的EETypeLoadException没有携带任何其他信息,并且无法获取有关确切失败原因的信息

关于c# - 如何找到引发EETypeLoadException的原因?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25606104/

10-11 11:24