Öffentliche Symbole und private Symbole
Wenn Sie einen Treiber oder ein anderes Programm erstellen, werden die Symbole des Programms normalerweise in Symboldateien gespeichert, obwohl einige ältere Compiler bestimmte Symbole in der ausführbaren Datei speichern. Wenn ein Debugger ein Programm analysiert, muss er auf die Symbole des Programms zugreifen.
In der Regel können Symboldateien ein oder alle der folgenden Symbole enthalten:
Die Namen und Adressen aller Funktionen
Alle Datentyp-, Struktur- und Klassendefinitionen
Namen, Datentypen und Adressen globaler Variablen
Namen, Datentypen, Adressen und Bereiche lokaler Variablen
Die Zeilennummern im Quellcode, die den einzelnen binären Anweisungen entsprechen
Einige Programmentwickler können sich unwohl fühlen, all diese Informationen mit ihren Kunden zu teilen. BinPlace kann verwendet werden, um die Anzahl von Symbolen in einer Symboldatei zu reduzieren.
Einige grundlegende Symbole, z. B. Funktionsnamen und globale Variablen, werden selbst für das rudimentäre Debuggen benötigt. Diese werden als öffentliche Symbole bezeichnet. Symbole wie Datenstrukturnamen, globale Variablen, die nur in einer Objektdatei sichtbar sind, lokale Variablen und Zeilennummerninformationen sind für das Debuggen nicht immer erforderlich, obwohl sie für eine ausführlichere Debugsitzung nützlich sind. Diese werden als private Symbole bezeichnet.
Eine Symboldatei, die sowohl private als auch öffentliche Symbole enthält, wird als vollständige Symboldatei bezeichnet. Eine Symboldatei, die nur öffentliche Symbole enthält, wird als Stripped-Symboldatei bezeichnet.
BinPlace kann eine Striped-Symboldatei erstellen. Dazu wird eine neue Symboldatei erstellt, die nur öffentliche Symbole enthält. die privaten Symbole werden entfernt ("entfernt"). Wenn die gängigsten BinPlace-Optionen verwendet werden (-a -x -s -n), werden die entfernten Symboldateien in dem Verzeichnis platziert, das nach dem Schalter -s aufgeführt ist, und die vollständigen Symboldateien werden in dem Verzeichnis platziert, das nach dem - n-Schalter aufgeführt ist.
Wenn BinPlace eine Symboldatei entfernt, erhalten die stripped- und die Vollversion der Datei identische Signaturen und andere identifizierende Informationen. Dadurch können Sie beide Versionen zum Debuggen verwenden.
Hinweis BinPlace entfernt private Symbole aus einer Symboldatei, wenn sich die Symboldatei im selben Verzeichnis wie die ausführbare Datei befindet, und Sie geben den Namen der ausführbaren Datei (zusammen mit den entsprechenden Optionen) in der BinPlace-Befehlszeile an. Sie sollten den Namen der Symboldatei nicht selbst angeben. Dies führt dazu, dass BinPlace die Datei verschiebt, ohne sie zu ändern.
Wenn Sie ermitteln müssen, ob eine Symboldatei private Symbole enthält, können Sie das SymChk-Tool verwenden. SymChk ist Teil des Pakets Debugtools für Windows. Weitere Informationen finden Sie unter SymChk und Windows-Debugging .
Wenn Sie Ihren Treiber an das Windows-Hardwarezertifizierungsprogramm übermitteln, können Sie entfernte Symboldateien übermitteln, wenn Sie Ihre privaten Symbole nicht für Microsoft freigeben möchten. Symboldateien, die von BinPlace entfernt wurden, machen keine Teile der Treiberarchitektur verfügbar, die normalerweise als vertraulich betrachtet werden. Weitere Informationen finden Sie im Windows-Hardwarezertifizierungsprogramm.