Condividi tramite


Simboli pubblici e simboli privati

Quando si compila un driver o un altro programma, i simboli del programma vengono in genere archiviati nei file di simboli, anche se alcuni compilatori meno recenti archiviano determinati simboli nel file eseguibile. Quando un debugger analizza un programma, deve accedere ai simboli del programma.

In genere, i file di simboli possono includere uno o tutti i simboli seguenti:

  • Nomi e indirizzi di tutte le funzioni

  • Tutte le definizioni di tipo di dati, struttura e classe

  • Nomi, tipi di dati e indirizzi delle variabili globali

  • Nomi, tipi di dati, indirizzi e ambiti di variabili locali

  • Numeri di riga nel codice sorgente che corrispondono a ogni istruzione binaria

Alcuni sviluppatori di programmi potrebbero sentirsi scomodi a condividere tutte queste informazioni con i propri clienti. BinPlace può essere usato per ridurre la quantità di simboli in un file di simboli.

Alcuni simboli di base, ad esempio nomi di funzione e variabili globali, sono necessari anche per il debug più rudimentario. Questi sono detti simboli pubblici. I simboli, ad esempio i nomi della struttura dei dati, le variabili globali visibili in un solo file di oggetti, le variabili locali e le informazioni sul numero di riga non sono sempre necessarie per il debug, anche se sono utili per una sessione di debug più approfondita. Questi sono denominati simboli privati.

Un file di simboli che contiene simboli privati e pubblici viene chiamato un file simbolo completo. Un file di simboli che contiene solo simboli pubblici viene chiamato un file di simboli rimosso.

BinPlace può creare un file di simboli rimosso. Questa operazione viene eseguita creando un nuovo file di simboli che contiene solo simboli pubblici; i simboli privati vengono rimossi ("rimosso"). Quando vengono usate le opzioni BinPlace più comuni (-a -x -s -n), i file di simboli rimossi vengono inseriti nella directory elencata dopo l'opzione - s e i file di simboli completi vengono inseriti nella directory elencata dopo l'opzione -n .

Quando BinPlace esegue la striping di un file di simboli, le versioni rimosse e complete del file vengono fornite firme identiche e altre informazioni di identificazione. In questo modo è possibile usare entrambe le versioni per il debug.

Nota BinPlace rimuove i simboli privati da un file di simboli quando il file di simboli si trova nella stessa directory del file eseguibile e si specifica il nome del file eseguibile (insieme alle opzioni appropriate) nella riga di comando BinPlace. Non è consigliabile specificare il nome del file di simboli stesso, in questo modo binPlace lo spostamento del file senza modificarlo.

Se è necessario determinare se un file di simboli contiene simboli privati, è possibile usare lo strumento SymChk . SymChk fa parte del pacchetto Strumenti di debug per Windows. Per informazioni dettagliate, vedere SymChk e Debug di Windows .

Se si invia il driver al programma di certificazione hardware di Windows, è possibile inviare file di simboli rimossi se si preferisce non condividere i simboli privati con Microsoft. I file di simboli rimossi da BinPlace non espongono parti dell'architettura del driver che normalmente sarebbero considerate riservate. Per altre informazioni, vedere Programma di certificazione hardware Windows.