2010-03-12 13 views
35

Attualmente ho la soluzione A che contiene una base di livello dominio e la soluzione B che fa riferimento ai binari dalla soluzione A. Esiste un modo per eseguire il debug dall'uno all'altro con due istanze di visualizzazione studio aperto (uno per ogni soluzione). Ho letto che puoi semplicemente aggiungere i progetti esistenti dalla soluzione A alla soluzione B. C'è qualche altra soluzione che funzioni? Ho provato a collegare direttamente la soluzione A a ciò che l'eseguibile in esecuzione nella soluzione B, ma non mi consente di collegare più debugger alla stessa app.Debugging attraverso diverse soluzioni in Visual Studio

Devo notare che quando passo in una parte di esso viene automaticamente richiamato il codice dalla soluzione A all'interno dell'istanza della soluzione B di Visual Studio per eseguire il debug. Suppongo che sia accettabile, ma non è possibile semplicemente impostare punti di interruzione arbitrari e aspetta che il codice li colpisca in questo modo.

Grazie

risposta

30

Non è possibile avere 2 istanze di Visual Studio che eseguono il debug della stessa procedura. Questa è una limitazione di Windows e la maggior parte degli altri sistemi operativi in ​​quanto al massimo un processo può essere il debug di un altro.

È uno scenario perfettamente supportato anche se per eseguire il debug di binari che non fanno parte della soluzione. Come hai notato, puoi tranquillamente passare ai binari dalla Soluzione B mentre esegui il debugging da una Soluzione A.

Un elemento che si intrometterà qui è la funzionalità di debug denominata "Just My Code". Questa è una funzionalità mirata a ridurre al minimo l'esperienza di debug al solo codice della soluzione. Ottimo per soluzioni normali, ma brutto quando esegui il debug di binari arbitrari. È probabile che causi molti dei problemi relativi ai punti di interruzione che stai vedendo. Avrai voglia di disabilitarlo facendo le seguenti

  • Strumenti -> Opzioni -> Debug
  • incontrollato "Attiva Just My Code"
+4

Vedi anche la risposta di Chris. È possibile impostare i punti di interruzione del codice sorgente della soluzione A nella soluzione B senza aggiungere progetti alle soluzioni. Puntare Visual Studio ai file PDB di A (creati durante la compilazione, vedere la risposta di Chris) e quindi aprire il file di origine di A nella Soluzione B. È sufficiente aprire o trascinare la selezione, non è necessario aggiungerlo alla soluzione. Una nota, a volte il punto di interruzione apparirà vuoto (come se non venisse colpito) finché non viene caricato l'assembly, che potrebbe essere in fase di runtime. – Vimes

+0

@JohnB Quando dici "drag-n-drop", cosa intendi? Se trascino un file dal solution explorer di un'istanza di VS 2010 a un altro, l'unica destinazione di trascinamento valida è l'editor di testo e incolla semplicemente una copia del nome file nel documento aperto. Se trascino la scheda dell'editor da un'istanza di VS non posso rilasciarla nell'altra. C'è un modo semplice e veloce per fare ciò che non comporta problemi con file-> aprire? – Weeble

+2

@Weble, trascino il file sorgente da Windows Explorer nell'area di testo di Visual Studio. Per me, questo apre il file. – Vimes

14

Cosa succede se si caricano esplicitamente i simboli dalla Soluzione A?

Se vai a Strumenti> Opzioni> Debugging-> Simboli è possibile puntarlo verso il file PDB dalla soluzione A.

Poi si può vedere se i simboli vengono caricati dai vostri binari andando su Debug-> Windows-> Moduli durante il debug.

14

È possibile avere un solo debugger che esegue il debug di un processo contemporaneamente. Ciò significa che è necessaria solo un'istanza di Visual Studio aperta.

Tuttavia, è sufficiente aprire il file .cpp/.cs/qualunque dalla Soluzione B nella copia della soluzione di Visual Studio e impostare i punti di interruzione. Funzionerà ancora anche se quei file non fanno realmente parte della soluzione.

+5

Sono stato con VS per 13 anni e appena saputo da voi che si può solo aprire un file di origine che non sono presentate nelle soluzioni in fase di debug e ancora permette l'impostazione di punti di interruzione (se il pdb viene trovato e il file di origine si trova nella stessa posizione e forse in altre condizioni, ma comunque. Esaminerò ulteriormente). Grazie mille Dean – buckley

1

C'è una semplice correzione per questo.

Aprire entrambi i file di soluzione ed eseguirlo. Interrompere la seconda istanza della soluzione che si desidera associare al processo, ma assicurarsi che le porte siano in esecuzione. Ora è possibile collegare il processo di porta alla prima istanza della soluzione e eseguire il debug come per magia.

1

Ecco cosa ho fatto.

Dire un progetto dalla soluzione A fa riferimento a un progetto della soluzione B e voglio eseguire il debug nel progetto della soluzione B dal progetto Solution A.

Soluzione aperta B in Visual Studio.Impostare le proprietà del progetto su "Usa server IIS locale Wb", impostare l'URL del progetto e creare la directory virtuale.

Soluzione aperta A in un'altra istanza di Visual Studio. Impostare le proprietà del progetto su "Usa server IIS locale IIS" e selezionare "Usa IIS Express", impostare l'URL del progetto e creare la directory virtuale.

Premere F5 e avviare il debug dell'istanza della soluzione B di Visual Studio. Quindi premere F5 e avviare il debug della soluzione Un'istanza di Visual Studio. Ora entrambe le istanze di Visual Studio saranno in modalità di debug. Inizia dalla Soluzione A ora e dovresti essere in grado di eseguire il debug nella Soluzione B, proprio come se entrambi i progetti fossero nella stessa soluzione.

La chiave qui è "Usa IIS express" per uno e "Server Web IIS locale" per l'altro progetto. Questo ti permetterà di avere due debugger in esecuzione contemporaneamente.

+0

Funziona solo se si eseguiva il debug di un'applicazione Web. Credo che OP stia lavorando con gli eseguibili. –

0

Verificare che .dll e .pdb si trovino nel contenitore. Sarai in grado di eseguire il debug sull'altra soluzione aperta nell'altro Visual Studio.

Di solito abbiamo una cartella (ad esempio Dipendenze) da cui si fa riferimento alle DLL. Inserisci la DLL in questa cartella. Le DLL vengono inviate a questa cartella quando costruiamo il progetto di riferimento (usando gli eventi di Build, ci sono anche altri modi).

2

Questo potrebbe essere tardi, ma è per chiunque abbia ancora bisogno di una soluzione facile e reale. È sufficiente modificare le proprietà della soluzione per utilizzare l'impostazione Progetti di avvio multipli e impostare il progetto da avviare contemporaneamente.

Segui questo link

Debug Multiple Projects at the Same Time in Visual Studio

+0

C'è una differenza, tuttavia, tra l'avvio di più progetti (se è necessario un server in esecuzione, ad esempio) e solo facendo riferimento a un progetto esterno in modo da poter accedere al codice. –

Problemi correlati