我有一个Windows 8.1 WinRT(现代/城域)应用程序,部分是原生C ++,部分是.net(C#)
在某些时候,C ++部分正在调用设置为C#方法的委托,当调用此委托时抛出EETypeLoderException并且该方法未被调用,我想找出原因是什么这次失败。
委托指向的方法是在已经加载的.net程序集中,来自此程序集的代码 - 以及具有要调用方法的同一个类 - 已经运行(并且可能正在另一个中运行)抛出异常时的线程)
EETypeLoadException是一个本机非托管异常,它是由非托管代码抛出的(在msvcr120_clr0400.dll中),我只能使用非托管调试器来查看它,而调试器无法向我显示异常数据,因为它不知道EETypeLoadException类。
我无法捕获异常并从代码中提取数据,因为我没有它的头文件或任何超类。
融合日志查看器(FUSLOGVW)没有显示任何有用的内容,没有绑定错误,成功的绑定看起来并不相关。
Procmon没有显示任何访问丢失的dll的尝试
在UI线程或后台任务上运行代码并不会改变任何内容。
我甚至尝试查看异常对象的内存转储,并查看看似指针的任何内容,无法找到错误消息。
在本地计算机和模拟器中都会发生这种情况
我在Windows 8.1计算机上使用Visual Studio 2013更新3
答案 0 :(得分:2)
看起来WinRT中的本机代码抛出的EETypeLoadException(即不是.net CLR)没有携带任何其他信息,也无法获得有关确切失败的信息