Condividi tramite


Caricamento di simboli posticipati

Per impostazione predefinita, le informazioni sui simboli non vengono effettivamente caricate quando vengono caricati i moduli di destinazione. I simboli vengono invece caricati dal debugger in base alle esigenze. Questo è detto caricamento posticipato dei simboli o caricamento di simboli differiti. Quando questa opzione è abilitata, il debugger carica i simboli ogni volta che rileva un simbolo non riconosciuto.

Quando il percorso del simbolo viene modificato, ad esempio usando il comando .sympath (Imposta percorso simbolo), tutti i moduli caricati con simboli di esportazione vengono ricaricati in modo differinte. I simboli dei moduli con simboli PDB completi verranno ricaricati in modo differibile se il nuovo percorso non include più il percorso originale usato per caricare i simboli PDB. Se il nuovo percorso include ancora il percorso originale del file di simboli PDB, tali simboli non verranno ricaricati in modo differire.

Quando il caricamento posticipato dei simboli è disabilitato, l'avvio del processo può essere molto più lento, perché tutti i simboli vengono letti ogni volta che viene caricato un modulo.

In WinDbg il comportamento di caricamento posticipato dei simboli può essere modificato per i simboli senza prefisso del modulo usando l'opzione Risolvi simboli non qualificati nel menu Debug .

È possibile eseguire l'override del caricamento posticipato dei simboli usando il comando ld (Carica simboli) o il comando .reload (Reload Module) con l'opzione /f. Questi forzano il caricamento immediato dei simboli specificati, anche se il caricamento di altri simboli viene posticipato.

Per impostazione predefinita, il caricamento posticipato dei simboli è abilitato. In CDB e KD l'opzione della riga di comando -s disattiva questa opzione. Può anche essere disattivata in CDB usando la variabile LazyLoad nel file tools.ini . Quando il debugger è in esecuzione, questa opzione può essere attivata o disattivata usando rispettivamente .symopt+0x4 o symopt-0x4.