È possibile eseguire il debug di un'app .NET con SOLO il codice sorgente di un file?
-
01-07-2019 - |
Domanda
Voglio eseguire il debug di un'applicazione in Visual Studio ma ho SOLO il codice sorgente per 1 classe. Ho solo bisogno di scorrere una singola funzione in quel file, ma non capisco di cosa ho bisogno per farlo. Penso che i passaggi siano normalmente qualcosa del genere:
- Apri un file in VS
- Carica nei simboli " " (File .PDB)
- Allega al processo in esecuzione
So come fare # 1 e # 3, ma non so come fare # 2 senza il file .PDB. È possibile generare il file .PDB per farlo funzionare? Grazie!
Soluzione
Sono necessari i file * .pdb (passaggio 2 dal post) Questi file contengono il mapping tra codice sorgente e assembly compilato. Quindi i tuoi passi sono corretti. Se il tuo file sorgente presenta differenze con il file originale, imposta il segno di spunta " Consenti al codice sorgente di essere diverso dalla versione originale " nella finestra di dialogo delle proprietà di BP.
Breakpoint e tracepoint in Visual Studio
Se non disponi di file PDB, puoi provare a decompilare il tuo progetto usando Reflector.FileDisassembler o FileGenerator For Reflector . È possibile ricompilare questi file per ottenere i PDB
Dai un'occhiata anche a Deblector - componente aggiuntivo di debug per Reflector.
Altri suggerimenti
È necessario il file del simbolo (.PDB) che appartiene all'applicazione che si sta tentando di eseguire il debug.
Il debugger di Visual Studio utilizza il percorso del PDB nel file EXE o DLL per trovare il file project.pdb. Se il debugger non riesce a trovare il file PDB in quella posizione o se il percorso non è valido, ad esempio, se il progetto è stato spostato su un altro computer, il debugger cerca il percorso contenente il file EXE seguito dai percorsi dei simboli specificati nella finestra di dialogo Opzioni . Questo percorso è generalmente la cartella Debugging nel nodo Simboli. Il debugger non carica un PDB che non corrisponde al binario in fase di debug.
Il file simbolo è il file .pdb. Se lo metti accanto all'exectuable, questo caricherà i simboli e punterà al file sorgente.
Nel tuo caso 'Simboli' significa un file pdb per l'assembly che desideri eseguire il debug. Il debugger non richiede che tu abbia tutto il sorgente, solo che hai il pdb corrispondente. Il pdb viene generato durante la creazione dell'assembly, e sfortunatamente non è possibile crearne uno dopo il fatto. Se non hai il pdb dovrai eseguire il debug a un livello inferiore del codice sorgente.
Se hai creato l'assemblaggio sulla tua macchina, i simboli saranno trovati quando lo attacchi. In quel caso basta impostare un breakpoint sull'origine e fare tutto il necessario per far funzionare quel codice, e tu colpirai il breakpoint.
Se non è stato creato, è necessario trovare il pdb per l'assembly. La finestra dei moduli che si trova in Debug / Windows / Moduli può spesso aiutarti indicandoti gli assembly caricati nel processo insieme alle informazioni sulla versione e ai timestamp.
Avrai bisogno di tali informazioni nei casi in cui potrebbero esserci più versioni di un assembly (come mantenere molte build notturne o le ultime 20 o più versioni di build a integrazione continua).
spero che sia d'aiuto.