2014-09-01 14 views
7

Ho un'applicazione di Windows 8.1 WinRT (moderno/metro), che è C in parte nativa ++ e in parte .net (C#)Come trovo la ragione per cui EETypeLoadException è stata lanciata?

Ad un certo punto la parte C++ chiama un delegato che è impostato su un metodo di C#, quando questo delegato è chiamato un EETypeLoderException è gettato e il metodo non viene chiamato, voglio scoprire che cosa è la ragione di questo fallimento.

Il metodo a cui punta il delegato è in un assembly .net già caricato, il codice di questo assembly - e la stessa classe con il metodo to-be-called - è già stato eseguito (e probabilmente è in esecuzione in un altro thread nel momento in cui viene generata l'eccezione)

EETypeLoadException è un'eccezione non gestita nativa, generata da codice non gestito (in msvcr120_clr0400.dll), posso solo utilizzare il debugger non gestito per esaminarlo e che il debugger può mi mostra i dati dall'eccezione perché non sa della classe EETypeLoadException.

non posso prendere i dati delle eccezioni ed estrarre da esso in codice, perché non ho i file di intestazione per esso o qualsiasi delle sue classi Super.

Il visualizzatore di log di fusione (FUSLOGVW) non mostra nulla di utile, nessun errore si legano, attacchi di successo non sembrano correlati.

Procmon non mostra alcun tentativo di accedere a una dll mancante

Rendere il codice corsa sul thread UI o attività in background non cambia nulla.

ho anche prova a guardare il dump di memoria dell'oggetto eccezione e dopo tutto ciò che si presenta come un puntatore, non riusciva a trovare un messaggio di errore.

Questo avviene sia sulla macchina locale e nel simulatore

che sto utilizzando Visual Studio 2013 Update 3 su un computer Windows 8.1 macchina

risposta

1

Sembra EETypeLoadException lanciata da codice nativo in WinRT (cioè , non il CLR .NET) non porta tutte le ulteriori informazioni e non è possibile ottenere le informazioni su ciò che esattamente è riuscito

0

e 'davvero un'eccezione dal codice nativo. Sono in grado di catturare l'eccezione girando sui Debug> Eccezioni> C++ Eccezioni e risolto il mio problema:

enter image description here

+0

Come funziona questo aiuto indetify il tipo di problematica e scoprire il motivo per cui non poteva essere caricato? – Nir

Problemi correlati