Domanda

Sto lavorando con assembly in modalità misto in C ++ / cli. Tutte le modalità gestite assemblate PDB vengono caricate quando è correttamente in modalità modalità misto, ma i DLL nativi e i PDB non vengono caricati anche se le informazioni di PDB native vengono visualizzate nel riquadro Modules (cioè in VS Debug-> Windows-> Moduli). < / P >.

Sto usando DLL nativo e chiamando la sua funzione esportata nel gruppo misto nel codice C ++ / CLI. Qui, le funzioni vengono chiamate con successo, ma i simboli nativi PDB non si caricano e tutti i punti di interruzione nel codice nativo sono mostrati come cavo cerchio e suggerimenti utensili afferma che non ci sono simboli caricati per questo.

Ho fatto tutto, PDB inserito nella directory corrente dove viene lanciato il processo gestito; cancellato tutte le cartelle di OBJ e Debug e ricompilizzano ogni progetto allo stesso tempo; Ho persino usato l'utilità CHKMATCH che mostra che i simboli nell'eXE e corrispondenti PDB corrispondono.

C'è un modo per abilitare i punti di interruzione del codice nativo durante la chiamata da Gestione (Modalità miscelata C ++ / LCI)?

Saluti,

USMAN

È stato utile?

Soluzione

Il debug in modalità misto può essere colpito e perdere, per lo più manca.Primo controllo che hai effettivamente abilitato il debug in modalità misto.Da un progetto C #, è Progetto + Proprietà, Debug, Abilitato casella di controllo Debug di codice non gestito.Il debug della modalità mista non è abilitato per processi a 64 bit.Se si esegue su un sistema operativo a 64 bit, assicurarsi di forzare l'esecuzione del .exe in modalità a 32 bit.Progetto + Proprietà, scheda Build, Target Platform= X86.

Avanti Verifica dove il debugger ha cercato i file .pdb.Dalla finestra Debug + Windows + Moduli, fare clic con il pulsante destro del mouse sulla DLL e selezionare "Informazioni di caricamento simbolo".Final Gasp è utilizzare __debugbreak () nel codice non gestito.


.

Aggiornamento: le versioni recenti di VS (Avvio di VS2012) hanno un nuovo motore di debug gestito che non è abbastanza compatibile con il motore di debug non gestito.Strumenti> Opzioni> Debug> Generale, spunta "Utilizzare la modalità di compatibilità gestita".Abilita il motore di debug legacy, l'ultimo utilizzato in VS2010.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top