Domanda

Lancio il mio programma in C #, che quindi chiama alcuni C ++ non gestiti.

Quando interrompo una riga nel C ++ non gestito, la voce di menu "Nuovo punto di interruzione dati" viene disattivata.

C'è comunque qualcosa attorno a questo?

È stato utile?

Soluzione

Per impostare un breakpoint di dati nella parte nativa di un processo in modalità mista, consultare la risposta inviata da jyoung .

Visual Studio disabilita i punti di interruzione dei dati quando si esegue altro che codice nativo puro. Vedi this pubblica una spiegazione parziale del perché da un Program Manager VS.

Altri suggerimenti

Quindi per fare questo ho dovuto:

  • imposta la DLL non gestita come progetto di avvio
  • imposta il programma gestito come comando di avvio
  • imposta la modalità debug come Native
  • " interruzione esecuzione " o colpisci un punto di interruzione in modo da trovarti nel " debugging " Stato

yech

La soluzione suggerita non funziona sempre. Anche quando si esegue il debug in modalità nativa, con il programma interrotto in codice nativo, quando si tenta di impostare un "Nuovo punto di interruzione dati", viene visualizzato un popup "Il punto di interruzione non può essere impostato. I punti di interruzione dei dati non sono supportati in Common Language Runtime "

L'alternativa è aggiungere direttamente punti di interruzione di dati dal codice. Vedi l'articolo qui .

Funziona bene in modalità mista, richiede solo la modalità di debug nativa per essere attiva (come suggerito sopra)

Un trucco molto utile che funziona ovunque è chiamare i breakpoint dal codice in condizioni speciali:

If (Condition)
    System.Diagnostics.Debugger.Break()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top