2012-12-28 17 views
5

Ho creato un progetto visual c++ 6.0 dll e lo utilizzo dal mio codice c#. Ora voglio eseguire il debug del dll ma non sono in grado di farlo.Come eseguire il debug della DLL C++ dal progetto C#?

Scelgo la seguente opzione per farlo:

  • mettere il punto di rottura nel mio codice visual c++ progetto.
  • creare la DLL e copiarla nella directory del mio progetto c#.
  • Ora creo il mio progetto c# e dll funziona correttamente (il metodo sta chiamando perfettamente).
  • Ora voglio eseguire il debug del dll.
  • Seguo un blog e apro il progetto c++ e scelgo lo Attach to process da vc++.
  • ma non sono in grado di trovare il processo in esecuzione del progetto visual c#, mentre è disponibile nel processo del task manager.

Nella mia soluzione progetto c# Ho due cioè

  • servizio web del progetto (ho chiamato il metodo dll al momento di accedere ad un URL)
  • Un altro è webform application che avvia i servizi web .

Ora, per favore aiutatemi come devo eseguire il debug della mia DLL. Ho seguito così tanti blog ma tutti si stanno concentrando sul metodo Attaching process che non funziona nelle mie condizioni. Cosa dovrei fare?

risposta

9

Avrete bisogno di abilitare il debug non gestito, non è attivato di default in entrambi gli scenari perché il vostro programma principale è gestito.

Lo si fa nel progetto C# con Progetto> Proprietà> scheda Debug> selezionare la casella di controllo "Abilita debug del codice non gestito".

Lo si fa con Strumenti> Collega a processo facendo clic sul pulsante Seleziona. Scegli il pulsante di opzione "Esegui il debug di questi tipi di codice" e spunta sia gestito che nativo. Potrebbe essere necessario ricorrere al solo nativo se il tuo processo è a 64 bit.

Impostare un punto di interruzione nel codice sorgente della DLL e assicurarsi di scrivere il codice C# che esercita la funzione DLL. Se hai ancora problemi nell'ottenere un breakpoint, usa Debug> Windows> Moduli e verifica di vedere la DLL nell'elenco dei moduli. Ottieni ulteriori informazioni sulla risoluzione dei problemi facendo clic con il pulsante destro del mouse, selezionare Informazioni caricamento simbolo. Che mostra una traccia di dove il debugger ha cercato il file PDB.

+0

Ho tentato di smantellare il debug ma, come ho detto, ho un solo progetto di servizio web e unapplicazione nella mia soluzione. L'ho abilitato nel mio secondo progetto ma non ho trovato alcuna opzione come tale nel primo progetto –

+0

Visitare: https://dl.dropbox.com/u/20476478/Untitled.png –

+0

se non ti dispiace allora possiamo fare una chat per 5 minuti? –

0

È possibile aggiungere un progetto C++ alla soluzione C# e aggiungere riferimenti direttamente al progetto (non dll), quindi non sarà necessario copiare la DLL. Dopo di ciò, avvia il normale debugging (F5) del tuo progetto C# e i breakpoint funzioneranno anche per il progetto C++. In questo modo sarà molto comodo per il debug. Ho provato questo debug e non ho cambiato altre impostazioni.

+0

ma per fare ciò devo modificare tutto il flusso di codice scritto nel progetto C# –

+0

Non sono sicuro del motivo per cui è necessario modificare il flusso di codice per questo, è necessario modificare solo il riferimento DLL al riferimento del progetto. O mi manca qualcosa? – SergeyS

+0

sì, ci sono problemi perché ho un '.lib' associato al progetto C++ visuale –

Problemi correlati