A cosa serve un file PDB?
File PDB: Ciò che ogni sviluppatore deve sapere
Esempio di scenario PDB:
Cos'è un file PDB?
La maggior parte degli sviluppatori dovrebbe sapere che i file PDB vengono utilizzati per aiutare nel debug del software. Ma come funziona esattamente, forse non lo conosciamo. Questo articolo descrive l'archiviazione e il contenuto dei file PDB. Descrive anche come il debugger trova il file PDB corrispondente a binay e come trova il file di codice sorgente corrispondente a binay. Questo articolo è rivolto a tutti gli sviluppatori Native e Gestiti.
Prima di iniziare, definiamo due termini: build privata, che viene usata per indicare una build generata sulla macchina dello sviluppatore; Build pubblica, che significa una build generata su una macchina pubblica. la build privata è relativamente semplice, perché PDB e binay sono nello stesso posto, e di solito i problemi che abbiamo riguardano la build pubblica.
La cosa più importante che tutti gli sviluppatori devono sapere è che "i file PDB sono importanti quanto il codice sorgente", senza il quale non puoi nemmeno fare il debug. Per la build pubblica, il server di simboli deve memorizzare tutti i PDB e, quando l'utente segnala un errore, il debugger può trovare automaticamente il file PDB corrispondente in binay, e sia Visual Studio che Windbg sanno come accedere al server di simboli. Prima di memorizzare PDB e binay nel server dei simboli, devi anche indicizzare il sorgente dell'esecuzione PDB, che deve associare PDB e sorgente.
La parte successiva presuppone che il Symbol Server e l'Indicizzazione del Source Server siano già configurati. TFS2010 può essere fatto semplicemente come indicizzare il sorgente e copiare il server dei simboli per una nuova build.
2. Il contenuto del file PDB
Ufficialmente iniziando il contenuto di PDB, PDB non è un formato di file pubblicamente disponibile, ma Microsoft fornisce un'API per aiutare a ottenere dati da PDB.
Il PDB nativo C++ contiene le seguenti informazioni: * indirizzi di funzione pubblici, privati e statici; * Il nome e l'indirizzo della variabile globale; * Nomi e offset di parametri e variabili locali sullo stack; * definizioni di tipo di classe, struttura e dati; * Dati di omissione del puntatore di frame per attraversare lo stack nativo su x86; * Il nome e il numero di righe nel file del codice sorgente;
Il PDB .NET contiene solo 2 parti di informazione: * Codice sorgente, nome del file e numero di righe; * e il nome della variabile locale; * Tutti gli altri dati sono già inclusi nel . NET Metadata;
|