2008-10-28 21 views

risposta

16

Per impostare un punto di interruzione dati nella parte nativa di un processo in modalità mista, vedere answer posted by jyoung.

Visual Studio disabilita i punti di interruzione dei dati quando si esegue qualsiasi cosa tranne il puro codice nativo. Vedere il messaggio this per una spiegazione parziale del perché da un VS Program Manager.

+3

"spiegazione parziale" = il team non ha mai scritto il codice per questo. –

30

Quindi, per fare questo ho dovuto:

  • impostare la dll non gestito come il progetto di avvio
  • impostare il programma gestito come il comando di avvio
  • insieme modalità di debug come Native
  • "Interrompi esecuzione" o fai clic su un punto di interruzione in modo che tu sia nello stato di "debug"

yech

+3

Nota rapida: come indicato nella domanda, il programma deve essere in uno stato di "interruzione" per rendere disponibile l'opzione di menu. – dss539

+0

Grazie. Non posso nemmeno essere misto. – Justin

+0

Non riesco mai a revocare questa risposta abbastanza. Grazie ancora per questa procedura dettagliata. – wil

4

La soluzione suggerita non funziona sempre. Anche quando eseguo il debug in modalità Nativa, con il programma interrotto nella parte di codice nativa, quando provo a impostare un "Nuovo punto di interruzione dei dati" viene visualizzato un popup "Impossibile impostare il punto di interruzione I punti di interruzione dei dati non sono supportati nel Common Language Runtime "

L'alternativa è aggiungere direttamente punti di interruzione dati dal codice. Vedere l'articolo here.

Questo funziona bene in modalità mista, si richiede solo la modalità di debug nativo di essere attivi (come suggerito sopra)

1

Un trucco molto utile che funziona in tutto il mondo è quello di chiamare i punti di interruzione dal codice in condizioni particolari:

If (Condition) 
    System.Diagnostics.Debugger.Break()