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:

  1. Apri un file in VS
  2. Carica nei simboli " " (File .PDB)
  3. 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!

È stato utile?

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.

MSDN: file PDB

  

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top