Udostępnij przez


Ładowanie symboli odroczonych

Domyślnie informacje o symbolach nie są ładowane po załadowaniu modułów docelowych. Zamiast tego symbole są ładowane przez debuger, ponieważ są one potrzebne. Jest to nazywane ładowaniem symboli odroczonych lub ładowaniem leniwych symboli. Po włączeniu tej opcji debuger ładuje symbole za każdym razem, gdy napotka nierozpoznany symbol.

Gdy ścieżka symboli zostanie zmieniona, na przykład za pomocą polecenia .sympath (Ustaw ścieżkę symboli), wszystkie załadowane moduły z symbolami eksportu są ładowane z opóźnieniem. Symbole modułów z pełnymi symbolami PDB zostaną leniwie ponownie załadowane, jeśli nowa ścieżka nie zawiera już oryginalnej ścieżki, która została użyta do załadowania symboli PDB. Jeśli nowa ścieżka nadal zawiera oryginalną ścieżkę do pliku symboli PDB, te symbole nie zostaną leniwie załadowane na nowo.

Po wyłączeniu ładowania symboli odroczonych uruchamianie procesów może być znacznie wolniejsze, ponieważ wszystkie symbole są odczytywane przy każdym załadowaniu modułu.

W systemie WinDbg można zmodyfikować zachowanie ładowania symboli odroczonych dla symboli, które nie mają prefiksu modułu przy użyciu opcji Rozwiąż niekwalifikowane symbole w menu Debugowanie .

Ładowanie symboli odroczonych można zastąpić za pomocą polecenia ld (załaduj symbole) lub polecenia .reload (Reload Module) z opcją /f . Wymuszają one natychmiastowe załadowanie określonych symboli, chociaż ładowanie innych symboli jest odroczone.

Odroczone ładowanie symboli jest domyślnie włączone. W środowiskach CDB i KD opcja wiersza polecenia -s wyłączy tę funkcję. Można go również wyłączyć w usłudze CDB przy użyciu zmiennej LazyLoad w pliku tools.ini . Po uruchomieniu debugera tę opcję można włączyć lub wyłączyć przy użyciu odpowiednio .symopt+0x4 lub .symopt-0x4.