2009-11-16 21 views
31

ho una DLL che è stato scritto in C++ e chiamato da un'applicazione C#. Il DLL è un codice non gestito.non può eseguire il debug non gestito DLL da C#

Se copio i suoi file e DLL.pdb con un post evento generazione per l'esecuzione di debug dell'app C#dir non riesco ancora a colpire eventuali punti di rottura che ho messo nel codice DLL. Il punto di interruzione ha un messaggio allegato che dice che "nessun simbolo è stato caricato per questo documento".

Cos'altro devo fare per ottenere il debug nella sorgente dll?

ho "Tools ->Options ->Debugging ->General ->Enable solo il mio codice" Disabilitato. Il DLL viene compilato con "monitoraggio Runtime e ottimizzazioni disabilitare (/ ASSEMBLYDEBUG)" e generare informazioni di debug su "Yes (/ DEBUG)"

risposta

55

per eseguire il debug nel vostro C++ DLL è necessario attivare il debug modalità mista sull'applicazione di avvio nella soluzione.

  • Fare clic destro sul progetto - > Proprietà
  • Vai Debug Tab
  • controllo "Attiva il debug di codice non gestito"

Questo vi permetterà di eseguire il debug in codice nativo per uno scenario stile F5 . Se si desidera attivare per il fissaggio al processo di effettuare le seguenti operazioni in "Connetti a processo" Dialog

  • Selezionare il processo per eseguire il debug
  • Fare clic sul pulsante "Seleziona ..." sopra il processo lista
  • Fare clic su "debug di questi tipi di codice"
  • Controllare sia gestito e dei nativi
+0

Mentre stavo per rispondere a questo, non ero' Sono sicuro che fosse così semplice o no. Se è così semplice, probabilmente ho sempre usato male durante il tentativo di eseguire il debug del codice C++ gestito che si interfaccia con il codice nativo. –

+2

Nota che se il progetto di avvio utilizza un altro progetto DLL C# che in realtà chiama la ++ DLL C, il progetto di avvio deve anche avere "Attivare il debug codice non gestito" acceso. –

+2

Selezionare la soluzione in Esplora soluzioni. Seleziona da> Menu | Strumenti | Opzioni | debug | Generale e deselezionare "Richiedi file di origine in modo che corrisponda esattamente alla versione originale" – Martin

4

È necessario abilitare non gestito (nativi) di debug.

Se si collega al processo dopo che è stato avviato:

Vai al menu Strumenti, quindi Connetti a processo, assicurarsi di avere il debug nativo abilitato.

si vedrà una sola lettura casella di modifica:

allegare a: Il codice gestito, il codice nativo [Selezionare]

Assicurarsi che il codice nativo è elencato lì. Se non lo aggiungi.

Se si avvia il progetto dall'interno di Visual Studio:

Sulla proprietà del progetto che si sta partendo in modalità debug. Vai al progetto Proprietà, quindi seleziona la scheda debug.

assicurarsi che questa casella è selezionata su:

Attiva codice non gestito debug

1

Quando si collega a un processo per eseguire il debug, è necessario specificare come si desidera collegare. Hai alcune opzioni, ovvero gestite e native. Per eseguire il debug del codice C# con C++ non gestito, è necessario collegarsi a un processo come gestito e come nativo (entrambi possono essere selezionati contemporaneamente).

0

mi avevano affrontato lo stesso problema e ha fatto tutto ciò che era suggerito nella risposta accettata, ma i punti di interruzione nel dll non gestito non era Getti successo!

Tuttavia quando ho fatto la seguente ho potuto finalmente eseguire il debug del dll!

Selezione della soluzione in Esplora soluzioni
Selezionare dal menu | Strumenti | Opzioni | debug | Generale
Deseleziona "Richiedi file di origine in modo che corrisponda esattamente alla versione originale"

Problemi correlati