2009-03-17 21 views
97

Ho un progetto (A) che fa riferimento a un assembly da una libreria di classi di progetto esterno (B) che si trova in un'altra soluzione vs.Come eseguire il debug di progetti di librerie di classi esterne in Visual Studio?

Devo ancora capire come posso eseguire il debugging in modo efficiente della libreria di classi da B mentre eseguo il programma dal progetto A. C'è qualcosa che devo abilitare sul progetto B come ad esempio informazioni di debug ecc. Quindi posso eseguire il debugging in debug tempo da A?

Grazie in anticipo.

risposta

156

Provare a disabilitare Just My Code (JMC).

  • Strumenti -> Opzioni -> Debugger
  • Deseleziona "Attiva Just My Code"

Di default il debugger cerca di limitare la visione del mondo in codice che è contenuto solo all'interno della soluzione . A volte questo è davvero heplful ma quando vuoi eseguire il debug del codice che non è nella tua soluzione (come è la tua situazione) devi disabilitare JMC per vederlo. Altrimenti il ​​codice sarà trattato come esterno e in gran parte nascosto dalla tua vista.

EDIT

Quando sei rotto nel codice provare quanto segue.

  • Debug -> Windows -> Moduli
  • Trova la DLL per il progetto che ti interessa
  • tasto destro del mouse -> simboli di carico -> Selezionare il percorso per il PDB per il vostro altro progetto
+1

la casella di controllo specifica era già incontrollato. Ciò che ho notato, però, è che entra in un metodo della libreria esterna, ma si verifica quando provo a chiamare un metodo che fa parte di un'interfaccia. – Konstantinos

+0

Potrebbe essere necessario accedere alle proprietà di una DLL e assicurarsi che Copia locale sia impostato su Vero. Altrimenti, i moduli non saranno in grado di trovare il .pdb come riferimento. –

+0

* Just My Code * non sembra fare alcuna differenza (posso passare al codice esterno anche se abilitato), ma è utile trovare il modulo nel debugger. – TheOperator

0

[secondo Martin Beckett, il ragazzo che mi invia questa risposta]

È possibile eseguire il debug in una libreria esterna.

Nella scheda delle impostazioni del progetto cercare "directory visual studio" nel campo "codice sorgente" includere il percorso delle origini openCV. Quindi assicurarsi che i file .pdb per ciascuna DLL di debug si trovino nella stessa directory della DLL.

12

Questo mi ha infastidito per qualche tempo. Quello che di solito faccio è ricostruire la mia libreria esterna usando la modalità di debug, quindi copiare sia .dll che il file .pdb nel cestino del mio sito web. Questo mi permette di entrare nel codice libarario.

+0

Anche quello è ciò che faccio da molto tempo. – IbrarMumtaz

5

Eseguo due istanze di Visual Studio: una per la DLL esterna e una per l'applicazione principale.
nelle proprietà del progetto della DLL esterna, impostare le seguenti:

Eventi di compilazione:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

Debug:

  • programma esterno di inizio: C:\<path-to-main>\bin\debug\<AppName>.exe

  • Directory di lavoro C:\<path-to-main>\bin\debug

In questo modo, ogni volta che creare la DLL esterna, esso viene aggiornato nella directory dell'applicazione principale. Se eseguo il debug dal progetto della DLL esterna, l'applicazione principale viene eseguita, ma il debugger esegue solo i breakpoint nella DLL esterna. Se colpisco il debug dal progetto principale, l'applicazione principale viene eseguita con la DLL esterna più recente, ma ora il debugger colpisce solo i breakpoint nel progetto principale.

Mi rendo conto che un debugger farà il lavoro per entrambi, ma trovo più semplice mantenere i due diritti in questo modo.

4

Assumere il percorso di

Progetto A

C:\Projects\ProjectA 

Progetto B

C:\Projects\ProjectB 

e la DLL di ProjectB è in

C:\Projects\ProjectB\bin\Debug\ 

per eseguire il debug in ProjectB da ProjectA, effettuare le seguenti operazioni

  1. 'dll s con dll di .PDB al ProjectA' Copia B directory compilazione s.
  2. Eseguire ora il debug ProjectA. Quando il codice raggiunge la parte in cui è necessario chiamare il metodo o gli eventi di dll ecc durante il debug, premere F11 per passare al codice della DLL.

NOTA: NON PERDERE per copiare il file PDB

Problemi correlati