Verzögertes Laden von Symbolen

Symbolinformationen werden standardmäßig nicht geladen, wenn die Zielmodule geladen werden. Stattdessen werden Symbole beim Bedarf vom Debugger geladen. Dies wird als verzögertes Laden oder faules Laden von Symbolen bezeichnet. Wenn diese Option aktiviert ist, lädt der Debugger Symbole, wenn es auf ein nicht erkanntes Symbol trifft.

Wenn der Symbolpfad geändert wird, z. B. mithilfe des Befehls ".sympath" (Set Symbol Path), werden alle geladenen Module mit Exportsymbolen lazily neu geladen. Symbole von Modulen mit vollständigen PDB-Symbolen werden lazily neu geladen, wenn der neue Pfad nicht mehr den ursprünglichen Pfad enthält, der zum Laden der PDB-Symbole verwendet wurde. Wenn der neue Pfad weiterhin den ursprünglichen Pfad zur PDB-Symboldatei enthält, werden diese Symbole nicht lazily neu geladen.

Wenn das Laden von verzögerten Symbolen deaktiviert ist, kann der Prozessstart viel langsamer sein, da alle Symbole immer gelesen werden, wenn ein Modul geladen wird.

In WinDbg kann das Verhalten beim Laden von verzögerten Symbolen für Symbole geändert werden, die kein Modulpräfix aufweisen, indem die Option "Nicht qualifizierte Symbole auflösen" im Menü "Debuggen " verwendet wird.

Sie können das Laden verzögerter Symbole überschreiben, indem Sie den Befehl ld (Load Symbols) oder den Befehl .reload (Reload Module) mit der Option /f verwenden. Diese erzwingen, dass die angegebenen Symbole sofort geladen werden, obwohl das Laden anderer Symbole zurückgestellt wird.

Standardmäßig ist das Laden von verzögerten Symbolen aktiviert. In CDB und KD deaktiviert die Befehlszeilenoption -s diese Option. Sie kann auch in CDB mithilfe der LazyLoad-Variablen in der datei tools.ini deaktiviert werden. Sobald der Debugger ausgeführt wird, kann diese Option mithilfe von .symopt+0x4 oder .symopt-0x4 aktiviert oder deaktiviert werden.