Simboli e file di simboli

Quando le applicazioni, le librerie, i driver o i sistemi operativi sono collegati, il linker che crea i file .exe e .dll crea anche una serie di file aggiuntivi noti come file di simboli.

I file di simboli contengono un'ampia gamma di dati che non sono effettivamente necessari durante l'esecuzione dei file binari, ma che potrebbero essere molto utili nel processo di debug.

In genere, i file di simboli possono contenere:

  • Variabili globali

  • Variabili locali

  • Nomi di funzione e indirizzi dei relativi punti di ingresso

  • Record FPO (Frame Pointer Omission)

  • Numeri di riga di origine

Ognuno di questi elementi viene chiamato, singolarmente, un simbolo. Ad esempio, un singolo file di simboli Myprogram.pdb può contenere diverse centinaia di simboli, tra cui variabili globali e nomi di funzione e centinaia di variabili locali. Spesso, le società software rilasciano due versioni di ogni file di simboli: un file di simboli completo contenente sia simboli pubblici che simboli privati e un file ridotto (spogliato) contenente solo simboli pubblici. Per informazioni dettagliate, vedere Simboli pubblici e privati.

Durante il debug, è necessario assicurarsi che il debugger possa accedere ai file di simboli associati alla destinazione di cui si sta eseguendo il debug. Sia il debug in tempo reale che i file di dump di arresto anomalo del debug richiedono simboli. È necessario ottenere i simboli appropriati per il codice di cui si vuole eseguire il debug e caricare questi simboli nel debugger.

Simboli di Windows

Windows mantiene i simboli nei file con estensione pdb.

Il compilatore e il linker controllano il formato del simbolo. Il linker Di Visual C++ inserisce tutti i simboli in file con estensione pdb.

Il sistema operativo Windows è stato compilato in due versioni. La compilazione gratuita (o build definitiva) ha file binari relativamente piccoli e la compilazione selezionata (o la compilazione di debug) ha file binari più grandi, con più simboli di debug nel codice stesso. Le build controllate erano disponibili nelle versioni precedenti di Windows prima di Windows 10 versione 1803. Ognuna di queste compilazioni ha i propri file di simboli. Quando si esegue il debug di una destinazione in Windows, è necessario usare i file di simboli che corrispondono alla build di Windows nella destinazione.

Nella tabella seguente sono elencate diverse directory presenti in un albero dei simboli di Windows standard:

Directory Contiene i file di simboli per

ACM

File di Microsoft Audio Compression Manager

COM

File eseguibili (.com)

CPL

programmi Pannello di controllo

DLL

File di libreria a collegamento dinamico (.dll)

DRV

File del driver (.drv)

EXE

File eseguibili (.exe)

SCR

File screen saver

SYS

File di driver (.sys)