La mia soluzione principale sta usando il codice di una libreria di classi di utilità, che ho scritto io stesso, ma è una parte di un'altra soluzione. Come posso impostare un breakpoint nel file DLL di riferimento?Come posso impostare un punto di interruzione nel codice di riferimento in Visual Studio?
risposta
Fare clic su Debug, Nuovo punto di interruzione, Interrompi funzione, quindi immettere il nome completo della funzione.
È possibile effettuare una delle operazioni seguenti:
- Aggiungere il progetto DLL alla soluzione contenente l'eseguibile. Quindi puoi impostare i punti di interruzione normalmente.
- Si potrebbe invece basta aprire il progetto DLL e utilizzare il Debug -> Connetti a processo da allegare al EXE esecuzione
(2) trovo facile - basta eseguire due istanze di lato Studio a fianco Ctrl-F5 sulla 'primaria' uno a lauch wihtout il debugger, quindi connettersi al processo con l'istanza di studio che si sta modificando il progetto della libreria –
FREP D.. -Oronge, si dovrebbe aggiungere che come una risposta -..!. sembra che l'approccio globale più semplice –
@ FrepD-Oronge vorrei poter avere leggi il tuo commento 2 ore e 39 min indietro You rock sua sicuramente la soluzione più semplice – Nova
Assicurarsi di avere il file PDB nella cartella bin/debug in cui la classe di riferimento la libreria dll risiede. Quando esegui il debug della tua soluzione corrente dovresti essere in grado di accedere al codice dalla libreria di classi. Quando entrate nella libreria di classi sarete in grado di impostare i breakpoint.
In Visual Studio aprire il file sorgente della DLL di riferimento che contiene il metodo desiderato menù manualmente utilizzando
File> Apri> File ...
quindi impostare il punto di interruzione cliccando su il bordo sinistro nell'editor di codice. Ciò consente di interrompere qualsiasi linea di codice e non solo per le chiamate di funzione. Visual Studio mostra il punto di interruzione in una sorta di stato disabilitato, perché ritiene che il codice non sia raggiungibile. Ignoralo; il punto di interruzione diventa attivo una volta eseguito il codice.
So che questa è una vecchia domanda, ma potrebbe essere di aiuto a molti.
Per il debugger per funzionare correttamente, è necessario caricare il debug database di simboli, un file PDB con lo stesso nome il gruppo che si desidera eseguire il debug. Se fa parte di una soluzione che hai creato, puoi semplicemente copiarlo e incollarlo dalla cartella bin dell'altra soluzione. Quindi aggiungere un punto di interruzione che specifica il percorso completo del metodo che si desidera eseguire il debug, oltre al nome dell'assembly in cui risiede. EX: "MyNamespace.MayClass.MyMethod, MyAssemblyName"
Se non si possiede il codice che si avere 2 opzioni, entrambe che coinvolgono un dissasemblatore. Io uso dotPeek per questo, dato che fa davvero un salto.
Opzione 1: si apre l'assemblea con dotPeek e creare un unico PDB per questo, quindi copiarlo nella cartella bin e seguire la procedura descritta sopra. https://www.jetbrains.com/decompiler/help/Generating_PDB_Files.html
Opzione 2: utilizzare dotPeek Symbol Server e PDB Generation. https://www.jetbrains.com/decompiler/help/Symbol_Server_and_PDB_Generation.html Successivamente seguire le istruzioni sopra per allegare un'istanza debugger.
Spero che questo aiuti
Wow, la generazione di PDP di dotPeek è sorprendente. –
C'è anche uno strumento che può recuperare il PDB direttamente dai server dei simboli (configurato in base al server dei simboli MS ufficiale [http://msdl.microsoft.com/download/symbols] per impostazione predefinita): https://github.com/rajkumar -rangaraj/PDB-Downloader. –
Questa non è la mia risposta, è stato il suggerimento di FREP D-Oronge in una delle osservazioni di cui sopra. E 'facile e funziona senza intoppi:
"Trovo facile - basta eseguire due istanze di lato Studio a fianco.Ctrl-F5 sulla 'primaria' uno per lanciare senza il debugger, quindi connettersi al processo con l'istanza di studio che si sta modificando il progetto biblioteca"
Tutti i crediti sono dovuti a lui.
non potevo' t ottenere questo funziona sotto VS2012 poiché ha detto che non poteva verificare la funzione zione. Sembrava essere in grado di trovare funzioni all'interno della soluzione ma non nelle librerie referenziate. – Sam
Ignora questo avviso e dovrebbe funzionare comunque – SLaks
Ora è chiaro per me, ma ricorda di includere lo spazio dei nomi completo della funzione esclusa la parentesi. –