Share via


Trovare file di simboli (.pdb), di origine e binari

In questo argomento viene descritto come individuare e specificare i file di simboli e i file di origine che il debugger utilizza per visualizzare informazioni per il debug.

Quando si esegue il debug di un progetto nell'IDE di Visual Studio, il debugger conosce esattamente dove trovare il file pdb e i file di origine del codice.Se si desidera eseguire il debug del codice fuori del codice sorgente del progetto, quali le finestre o il codice di terze parti le chiamate di progetto, è necessario specificare il percorso del file pdb (e facoltativamente, i file di origine del codice esterno) e questi file devono corrispondere esattamente alla compilazione degli eseguibili.

In questo argomento

File di simboli (pdb)

  • Quando il debugger cerca i file pdb

  • Poiché i file di simboli siano esattamente selezionare i file eseguibili?

  • Specificare il comportamento di percorsi e del simbolo

    • Specificare il comportamento di percorsi e del simbolo di dialogo opzioni di Visual Studio

    • Specificare opzioni aggiuntive del simbolo

  • Utilizzando i server di simboli

    • Utilizzo delle finestre e di altri simboli Microsoft

    • Utilizzando un server di simboli su una rete interna o nel computer locale

    • Utilizzando i server di simboli di terze parti

  • Simboli di individuare e caricare durante il debug

    • Modificare le opzioni del simbolo dal menu di scelta rapida

    • Ricerca di simboli con i simboli non vengono caricati documenti le pagine

  • Opzioni del compilatore per i file di simboli

    • Opzioni di C++

    • opzioni di .NET Framework

File di origine

  • Quando il debugger cerca i file di origine

  • Impostazioni di debug del file di origine di configurazione

    • Percorsi di ricerca di file di origine a una soluzione

    • Utilizzo dei supporti del server di origine

  • I file di origine trovare e caricare con alcun di origine non/simboli caricati le pagine

File di simboli (pdb)

Un file di database di programma (PDB), denominato anche file di simboli, esegue il mapping degli identificatori creati nei file sorgente per le classi, i metodi e altro codice negli identificatori utilizzati negli eseguibili compilati del progetto.Il file pdb esegue il mapping delle istruzioni nel codice sorgente alle istruzioni in esecuzione negli eseguibili.Il debugger utilizza queste informazioni per determinare le due principali: il file di origine e il numero di riga in cui viene visualizzata nell'IDE di Visual Studio e nella posizione dell'eseguibile si interrompa quando si imposta un punto di interruzione.Un file di simboli contiene inoltre la posizione originale dei file di origine e facoltativamente, la posizione di un server di origine da cui i file di origine possono essere recuperati.

ms241613.collapse_all(it-it,VS.110).gifQuando il debugger cerca i file pdb

  1. La posizione specificata nella DLL o file eseguibile.

    (Per impostazione predefinita, se è stata sviluppata una DLL o un file eseguibile sul computer, il linker colloca il percorso completo e il nome del file collegato con estensione pdb nella DLL o file eseguibile.Il debugger i controlli prima verifica se il file di simboli presenti nella posizione specificata nella DLL o file eseguibile.Ciò è utile, poiché è sempre simboli disponibili per il codice compilato nel computer.)

  2. file pdb che potrebbero essere presenti nella stessa cartella della DLL o del file eseguibile.

  3. Le cartelle della cache dei simboli locale.

  4. Qualsiasi rete, Internet, o server di simboli locali e posizioni in cui vengono specificati, come server di simboli Microsoft se abilitato.

ms241613.collapse_all(it-it,VS.110).gifPoiché i file di simboli siano esattamente selezionare i file eseguibili?

Il debugger carica un solo file pdb per un file eseguibile che corrisponde esattamente al file PDB creato quando l'eseguibile è stato compilato (ovvero il PDB deve essere l'originale o una copia del file di origine con estensione pdb).Poiché il compilatore è ottimizzato per la velocità di compilazione oltre all'attività principale di creare codice corretto e efficiente, il layout effettivo di un eseguibile può cambiare anche se il codice non è cambiato.Per ulteriori informazioni, vedere il post del blog MSDN sulla necessità di creare una corrispondenza esatta tra i file di simboli del debugger e i file binari con cui sono stati creati.

ms241613.collapse_all(it-it,VS.110).gifSpecificare il comportamento di percorsi e del simbolo

Quando si esegue il debug di un progetto nell'IDE di Visual Studio, il debugger carica automaticamente i file di simboli che si trovano nella directory del progetto.È possibile specificare i percorsi di ricerca alternativi e i server di simboli per Microsoft, le finestre, o componenti di terze parti in Debug/pagina diSimboli di Visual Studio Finestra di dialogo delle opzioni.Nella pagina Simboli, è anche possibile specificare moduli specifici che il debugger automaticamente per caricare i simboli per.E quindi modificare queste impostazioni manualmente mentre si è eseguito il debug.

ms241613.collapse_all(it-it,VS.110).gifSpecificare il comportamento di percorsi e del simbolo di dialogo opzioni di Visual Studio

Per aprire la pagina/simboli di debug

  1. Scegliere dal menu Debug, scegliere Options.

  2. Nella finestra di dialogo Options, scegliere Simboli nel nodo Debug.

Per specificare un percorso di ricerca o del server di simboli

  1. Scegliere l'icona della cartella Strumenti/Opzioni/Debug/icona della cartella Simboli.Nella casella Percorsi dei file di simboli (pdb) verrà visualizzato un testo modificabile.

  2. Digitare l'url o il percorso della directory del server di simboli o la posizione del simbolo.La funzione di completamento delle istruzioni facilita l'individuazione del formato corretto.

  3. Per migliorare le prestazioni di caricamento dei simboli digitare il percorso di una directory locale in cui copiare tali simboli dai server di simboli nella casella Directory memorizzazione simboli nella cache una directory locale in cui copiare tali simboli.

    [!NOTA]

    Non inserire la cache dei simboli in una cartella protetta come la cartella di C:\Windows o una delle relative sottocartelle.Utilizzare invece una cartella di lettura e scrittura.

Per specificare il comportamento di caricamento dei simboli

È possibile specificare i file che si desidera essere caricato automaticamente da percorsi della casella Percorsi dei file di simboli (pdb) quando si avvia il debug.I file di simboli nella directory del progetto vengono sempre caricati.

  1. Scegliere Tutti i moduli, eccetto quelli esclusi per caricare i simboli per tutti i moduli ad eccezione di quelli specificati quando si sceglie il collegamento Specificare moduli esclusi.

  2. Scegliere l'opzione Solo moduli specificati quindi scegliere Specificare moduli per elencare i moduli che i file di simboli che si è stato caricato automaticamente.I file di simboli per altri moduli vengono ignorati.

ms241613.collapse_all(it-it,VS.110).gifSpecificare opzioni aggiuntive del simbolo

È inoltre possibile impostare la seguente opzione pagina di debug/generale di dialogo opzioni di Visual Studio:

Avvisa se non vi sono simboli all'avvio (solo nativo)

Se questa opzione è selezionata, viene visualizzata una finestra di dialogo di avviso ogni volta che si tenta di eseguire il debug di un programma per il quale non sono disponibili le informazioni sui simboli.

Carica esportazioni DLL

Se questa opzione è selezionata, vengono caricate le tabelle di esportazione DLL.Le informazioni sui simboli delle tabelle di esportazione DLL possono essere utili se si lavora con messaggi Windows, routine Windows (WindowProc), oggetti COM, marshaling o qualsiasi DLL per la quale non sono disponibili simboli.La lettura di informazioni di esportazione di DLL comporta del sovraccarico.Pertanto questa funzionalità è disattivata per impostazione predefinita.

Per visualizzare i simboli disponibili nella tabella di esportazione di una DLL, utilizzare dumpbin /exports.I simboli sono disponibili per tutte le DLL di sistema a 32 bit.Leggendo l'output di dumpbin /exports, è possibile visualizzare il nome esatto della funzione, compresi i caratteri non alfanumerici.Questa caratteristica risulta utile per impostare un punto di interruzione su una funzione.I nomi di funzione delle tabelle di esportazione DLL possono apparire troncati in altri punti del debugger.Le chiamate sono elencate nell'ordine di chiamata, con la funzione corrente (al più alto livello di annidamento) all'inizio dell'elenco.Per ulteriori informazioni, vedere dumpbin /exports.

ms241613.collapse_all(it-it,VS.110).gifUtilizzando i server di simboli

Visual Studio può scaricare i file di simboli di debug dai server di simboli che implementano il protocollo di symsrv.Server di Visual Studio Team Foundation e Strumenti di debug per windows sono due strumenti che possono implementare i server di simboli.Specificare i server di simboli da utilizzare nella finestra di dialogo Opzioni di Visual Studio:

Strumenti - Opzioni - Debug - pagina Simboli

I server di simboli utilizzabili includono i seguenti:

  • I server di simboli pubblici Microsoft, che forniscono simboli per i sistemi operativi Windows, oltre a MDAC, a IIS, a ISA e a .NET Framework.

  • Server di simboli interno nella rete in uso.

  • Server di simboli sul computer locale in uso.

  • Un server di simboli esterno che fornisce simboli per DLL di terze parti utilizzate dal codice.

Per i server di simboli dai server di simboli pubblici Microsoft, è necessario specificare il percorso.

ms241613.collapse_all(it-it,VS.110).gifUtilizzo delle finestre e di altri simboli Microsoft

Per eseguire il debug di un arresto anomalo del sistema che si verifica durante la chiamata a una DLL di sistema o a una libreria di terze parti, spesso i file di sistema, pdb contenenti i simboli per DLL, EXE e i driver di periferica di Windows.È possibile ottenere questi simboli in più modi.

Utilizzando i server di simboli Microsoft

Per utilizzare i server di simboli Microsoft, scegliere Opzioni e impostazioni dal menu Debug quindi scegliere Simboli.Server dei simboli Microsoftselezionato.È inoltre necessario specificare una directory locale come percorso della cache dei simboli scaricati vengono archiviati.I simboli scaricati vengono archivio di seguito per motivi di prestazioni.

Visual Studio connette automaticamente ai server di simboli Microsoft quando si sceglie Server dei simboli Microsoft nella pagina dei simboli di dialogo opzioni.

Altre fonti dei simboli Microsoft

  • Se si desidera scaricare l'intero set di simboli per una versione di Windows, vedere Pacchetti di simboli Windows di download.

  • Il CD di Visual Studio contiene i file di simboli delle versioni selezionate di Windows.

ms241613.collapse_all(it-it,VS.110).gifUtilizzando un server di simboli su una rete interna o nel computer locale

Il team o società può creare i server di simboli per i propri prodotti e come cache dei simboli da origini esterne.Potrebbe essere un server di simboli sul computer.È possibile immettere il percorso del server di simboli come URL o un percorso nel server di simboli la casella Percorsi dei file di simboli (pdb) nella paginaSimboli / Debugdi Visual Studio Finestra di dialogo di opzione.

ms241613.collapse_all(it-it,VS.110).gifUtilizzando i server di simboli di terze parti

I provider di terze parti di applicazioni Windows e librerie possono fornire l'accesso al server di simboli su Internet.Viene inoltre fornita l'url dei server di simboli nella paginaSimboli / Debug,

[!NOTA]

Se si utilizza un server di simboli diverso dai server di simboli pubblici Microsoft, accertarsi che il server di simboli e il relativo percorso siano attendibili.Poiché i file di simboli possono contenere codice arbitrario eseguibile, potrebbe essere esposti a rischi di sicurezza.

ms241613.collapse_all(it-it,VS.110).gifSimboli di individuare e caricare durante il debug

In qualsiasi momento che il debugger sia in modalità di interruzione, è possibile decidere di caricare i simboli per un modulo in precedenza escluso dalle opzioni del debugger o che il compilatore non ha trovato.È possibile caricare i simboli dai menu di scelta rapida dello stack di chiamate, moduli, variabili locali, auto e di tutte le finestre Espressioni di controllo.Se il debugger interrompe il codice che non dispone del simbolo o un file di origine disponibili, una finestra del documento.È possibile trovare informazioni sui file negativo e agire individuarle e caricare.

ms241613.collapse_all(it-it,VS.110).gifModificare le opzioni del simbolo dal menu di scelta rapida

Mentre si è in modalità di interruzione, è possibile trovare e caricare i simboli per gli elementi visualizzati nello stack di chiamate, moduli, locali, colonne e tutte le finestre Espressioni di controllo.Selezionare un elemento nella finestra, aprire il menu di scelta rapida e scegliere una delle opzioni seguenti:

Opzione

Descrizione

Caricare i simboli

Tenta di caricare i simboli da percorsi specificati nella pagina/simboli di debug della finestra di dialogo Opzioni.Se il file di simboli non è disponibile, Esplora file viene avviata in modo da poter specificare un nuovo percorso di ricerca.

Informazioni sul caricamento dei simboli

Vengono fornite informazioni che mostrano il percorso di un file di simboli caricato, o percorsi trovate se non viene trovato il file.

Impostazioni simboli...

Aprire la pagina/simboli di debug della finestra di dialogo Opzioni di Visual Studio.

Sempre caricamento automatico

Aggiunge il file di simboli all'elenco dei file che vengono caricati automaticamente dal debugger.

ms241613.collapse_all(it-it,VS.110).gifRicerca di simboli con i simboli non vengono caricati documenti le pagine

Esistono diversi modi per il debugger si interrompa nel codice che non dispone di simboli disponibili:

  1. Entrare nel codice.

  2. Arrestando il codice da un punto di interruzione o da un'eccezione.

  3. Passando a un altro thread.

  4. Modificando lo stack frame facendo doppio clic su un frame nella finestra stack di chiamate.

Quando si verifica uno di tali eventi, il debugger visualizza la pagina Nessun simbolo caricato per individuare e caricare i simboli necessari.

Pagina Nessun simbolo caricato

  • Per modificare i percorsi di ricerca, scegliere un percorso non selezionato o scegliere Nuova e immettere un nuovo percorso.Scegliere Carica per trovare nuovamente i percorsi e per caricare il file di simboli se viene trovato.

  • Scegliere Ricerca e selezioneeseguibile-nome**...** per eseguire l'override di tutte le opzioni del simbolo e ritentare per percorsi di ricerca.Il file di simboli viene caricato se viene trovato, oppure in Esplora file per visualizzare manualmente selezionare il file di simboli.

  • Scegliere Modifica impostazioni simbolo … per visualizzare la pagina Simboli / Debug di dialogo opzioni di Visual Studio.

  • Scegliere visualizza disassembly per visualizzare il disassembly in una nuova finestra uno tempo.

  • Per visualizzare sempre il disassembly quando l'origine o i file di simboli non viene trovato, scegliere il collegamento Finestra di dialogo delle opzioni e selezionare sia Attiva debug a livello di indirizzo che Mostra dissassembly se l'origine non è disponibile.

    Opzioni/Debug/Generale, opzioni di disassembly

ms241613.collapse_all(it-it,VS.110).gifOpzioni del compilatore per i file di simboli

Quando si compila il progetto dall'IDE di Visual Studio e si utilizza la configurazione di compilazione standard Debug, C++ e compilatori gestiti creare i file di simboli appropriati per il codice.È inoltre possibile impostare le opzioni del compilatore dalla riga di comando creare i file di simboli.

ms241613.collapse_all(it-it,VS.110).gifOpzioni di C++

Un file di database di programma (PDB) utilizza il debug e informazioni sullo stato del progetto che consentono il collegamento incrementale di una configurazione di debug del programma.Un file PDB viene creato quando si utilizza /ZI o /Zi (per C/C++).

In Visual C++, l'opzione di /Fd denominare il file PDB creato dal compilatore.Quando si crea un progetto in Visual Studio mediante le procedure guidate, l'opzione di /Fd è impostata creare un file con estensione pdb denominato progetto.pdb.

Se si compila un'applicazione C/C++ utilizzando un makefile e specificare /ZI o /Zi senza /Fd, vengono generati due file PDB:

  • VCx.pdb, dove x rappresenta la versione di Visual C++, ad esempio VC11.pdb.In questo file, disponibile nella stessa directory in cui si trova il makefile del progetto, vengono memorizzate tutte le informazioni di debug relative ai singoli file OBJ.

  • progetto.pdb questo file contiene tutte le informazioni di debug per il file EXE.Per C/C++, questo file si trova nella sottodirectory \debug.

Ogni volta che crea un file OBJ, il compilatore C/C++ unisce le informazioni di debug in VCx.pdbQueste includono informazioni sui tipi ma non sui simboli, quali le definizioni delle funzioni.Pertanto anche se ogni file di origine include file di intestazione comuni quali <windows.h>, i typedef di tali intestazioni vengono archiviati solo una volta, anziché in ogni file OBJ.

Il linker crea progetto.pdb, contenente le informazioni di debug per il file EXE del progetto.Il file progetto.pdb contiene le informazioni di debug, inclusi i prototipi di funzione, non solo le informazioni sui tipi disponibili in VCxpdb.Entrambi i file PDB supportano gli aggiornamenti incrementali.Il linker incorpora inoltre il percorso del file con estensione pdb nel file con estensione exe o dll creato.

Il debugger di Visual Studio utilizza il percorso del file pdb nel file EXE o DLL per individuare progetto.pdb.Se non viene trovato il file pdb in tale percorso oppure se il percorso non è valido (ad esempio, se il progetto è stato spostato in un altro computer, verrà eseguita una ricerca nel percorso contenente il file EXE, i percorsi di simboli specificati nella finestra di dialogo Options (cartella diDebug, nodo Simboli ).Il debugger non carica un file PDB non corrisponda all'eseguibile sottoposto a debug.Se non viene trovato un file PDB, una finestra di dialogo Trova simboli viene visualizzato, che consente di trovare simboli o aggiungere altri percorsi al percorso di ricerca.

ms241613.collapse_all(it-it,VS.110).gifopzioni di .NET Framework

Un file di database di programma (PDB) utilizza il debug e informazioni sullo stato del progetto che consentono il collegamento incrementale di una configurazione di debug del programma.Un file PDB viene creato quando si utilizza /debug.È possibile compilare applicazioni con l'opzione /debug:full o /debug:pdbonly.Se si utilizza l'opzione di compilazione /debug:full, verrà generato codice di cui è possibile effettuare il debug.La compilazione con /debug:pdbonly genera file PDB ma non genera DebuggableAttribute che indica al compilatore JIT che le informazioni di debug sono disponibili.Utilizzare /debug:pdbonly se si desidera generare i file PDB per una build di rilascio che non è necessario eseguire il debug.Per ulteriori informazioni, vedere /debug (opzioni del compilatore C#) o /debug (Visual Basic).

Il debugger di Visual Studio utilizza il percorso del file pdb nel file EXE o DLL per individuare progetto.pdb.Se non viene trovato il file pdb in tale percorso, o se il percorso non è valido, verrà eseguita una ricerca nel percorso contenente il file EXE quindi i percorsi di simboli specificati nella finestra di dialogo Options.Questo percorso in genere corrisponde alla cartella Debug del nodo Simboli.Il debugger non carica un file PDB non selezionare il file eseguibile sottoposto a debug.Se non viene trovato un file PDB, una finestra di dialogo Trova simboli viene visualizzato, che consente di trovare simboli o aggiungere altri percorsi al percorso di ricerca.

Applicazioni Web

Il file di configurazione dell'applicazione (Web.config) deve essere impostato sulla modalità debug.Le cause ASP.NET in modalità di debug per generare i simboli dei file generati dinamicamente e consente al debugger di per connettersi all'applicazione ASP.NET.Visual Studio imposta questo automaticamente quando si avvia il debug, se il progetto è stato creato dal modello di progetto Web.

File di origine

Stack di chiamate, form o finestra Espressioni di controllo

ms241613.collapse_all(it-it,VS.110).gifQuando il debugger cerca i file di origine

Il debugger cerca i file di origine nelle seguenti posizioni:

  1. File aperti nell'IDE dell'istanza di Visual Studio che ha avviato il debugger.

  2. File nella soluzione aperta nell'istanza di Visual Studio.

  3. Directory specificate nella pagina Esegui debug dei file di origine o Proprietà comuni nelle proprietà della soluzione.

  4. Le informazioni di origine con estensione pdb di modulo.Può trattarsi il percorso del file di origine quando il modulo è stato compilato, o un comando a un server di origine.

ms241613.collapse_all(it-it,VS.110).gifImpostazioni di debug del file di origine di configurazione

ms241613.collapse_all(it-it,VS.110).gifPercorsi di ricerca di file di origine a una soluzione

È possibile specificare una rete o directory locale per trovare i file di origine.

  1. Selezionare la soluzione in Esplora soluzioni e quindi scegliere Proprietà dal menu di scelta rapida.

  2. Nel nodo Proprietà comuni, scegliere Esegui debug dei file di origine.

  3. Fare clic sull'icona della cartella Strumenti/Opzioni/Debug/icona della cartella Simboli.Il testo modificabile sia visualizzato nell'elenco Directory contenenti codice sorgente.

  4. Aggiungere il percorso che si desidera trovare.

Notare che solo la directory specificata viene trovata.È necessario aggiungere voci per tutte le sottodirectory che si desidera trovare.

ms241613.collapse_all(it-it,VS.110).gifUtilizzo dei supporti del server di origine

Quando il codice sorgente non è disponibile nel computer locale oppure il file PDB non corrisponde al codice sorgente, è possibile utilizzare il server di origine per eseguire il debug di un'applicazione.Il server di origine riceve richieste di file e restituisce i file effettivi.Questo server viene eseguito tramite un file DLL denominato srcsrv.dll.Il server di origine legge il file con estensione pdb dell'applicazione, che contiene i puntatori al repository del codice sorgente nonché controlli utilizzati per recuperare il codice sorgente dal repository.È possibile limitare i comandi che possono essere eseguito dal file con estensione pdb dell'applicazione specificando i comandi consentiti in un file srcsrv.ini, che deve essere inserito nella stessa directory dei e di devenv.exe.

Per ulteriori informazioni sulla connessione e sull'utilizzo di un server di origine, vedere Server di origine.

Nota sulla sicurezzaNota sulla sicurezza

I comandi arbitrari possono essere incorporati nel file con estensione pdb dell'applicazione, in modo da verificare che solo tali si desidera eseguire nel file srcsrv.ini.Eventuali tentativi di eseguire un comando non presente nel file srcsvr.ini causerà la visualizzazione di una finestra di dialogo di conferma.Per ulteriori informazioni, vedere Avviso di sicurezza: il debugger deve eseguire un comando non attendibile.I parametri dei comandi non vengono convalidati, prestare pertanto attenzione quando si utilizzano comandi attendibili.Se ad esempio si considera attendibile il file cmd.exe, un utente malintenzionato potrebbe specificare parametri in grado di rendere dannoso il comando.

Per consentire l'utilizzo di un server di origine

  1. Verificare di avere rispettato i requisiti di sicurezza descritti nella sezione precedente.

  2. Scegliere Opzioni dal menu Strumenti.

    Verrà visualizzata la finestra di dialogo Opzioni.

  3. Nel nodo Debug, scegliere Generale.

  4. Selezionare la casella di controllo Attiva il supporto del server di origine.

    Opzioni di abilitazione del server di origine

  5. (Facoltativo) scegliere le opzioni figlio desiderato.

    Si noti che sia Consenti server origine per assembly parzialmente attendibili (solo gestito) che Esegui sempre comandi del server di origine non attendibili senza chiedere conferma possono aumentare i rischi di sicurezza descritti in.

ms241613.collapse_all(it-it,VS.110).gifI file di origine trovare e caricare con alcun di origine non/simboli caricati le pagine

Quando il debugger interrompe l'esecuzione in una posizione in cui il file di origine non è disponibile, le pagine Nessun simbolo caricato o Nessuna origine caricata in grado di trovare il file di origine.Nessun simbolo caricato viene visualizzato quando il debugger non trova un file di simboli (pdb) per il file eseguibile completare la ricerca.Nessuna la pagina dei simboli disponibili opzioni per individuare il file.Se il file pdb viene trovato dopo l'esecuzione di una delle opzioni e il debugger può recuperare il file di origine utilizzando le informazioni nel file dei simboli, l'origine viene visualizzato.In caso contrario, una pagina Nessuna origine caricata viene visualizzata che descrive il problema.Nella pagina vengono visualizzati i collegamenti di opzione che consentono di eseguire azioni che possono risolvere il problema.