Punti di interruzione non risolti (punti di interruzione bu)
Se viene impostato un punto di interruzione per un nome di routine che non è stato caricato, il punto di interruzione viene chiamato punto di interruzione posticipato, virtuale o non risolto . Questi termini vengono usati in modo intercambiabile. I punti di interruzione non risolti non sono associati a un carico specifico di un modulo. Ogni volta che viene caricata una nuova applicazione, viene verificata la presenza di questo nome di routine. Se viene visualizzata questa routine, il debugger calcola l'indirizzo codificato effettivo del punto di interruzione virtuale e abilita il punto di interruzione.
Se si imposta un punto di interruzione usando il comando bu , il punto di interruzione viene considerato automaticamente non risolto. Se questo punto di interruzione si trova in un modulo caricato, il punto di interruzione è ancora abilitato e funziona normalmente. Tuttavia, se il modulo viene scaricato e ricaricato in un secondo momento, questo punto di interruzione non svanisce. D'altra parte, un punto di interruzione impostato con bp viene immediatamente risolto in un indirizzo.
Esistono tre differenze principali tra punti di interruzione bp e punti di interruzione bu :
Una posizione del punto di interruzione bp viene sempre convertita in un indirizzo. Se una modifica del modulo sposta il codice in corrispondenza del quale è stato impostato un punto di interruzione bp , il punto di interruzione rimane allo stesso indirizzo. D'altra parte, un punto di interruzione bu rimane associato al valore simbolico (in genere un simbolo più un offset) usato e tiene traccia di questa posizione simbolica anche se l'indirizzo cambia.
Se un indirizzo del punto di interruzione bp viene trovato in un modulo caricato e se tale modulo viene scaricato in un secondo momento, il punto di interruzione viene rimosso dall'elenco dei punti di interruzione. D'altra parte, i punti di interruzione vengono mantenuti dopo lo scaricamento e il caricamento ripetuti.
I punti di interruzione impostati con bp non vengono salvati nelle aree di lavoro WinDbg. I punti di interruzione impostati con bu vengono salvati nelle aree di lavoro.
Controllo dei punti di interruzione degli indirizzi e dei punti di interruzione non risolti
I punti di interruzione degli indirizzi possono essere creati con il comando bp (Imposta punto di interruzione) o il comando bm (Imposta punto di interruzione simbolo) quando è inclusa l'opzione /d. I punti di interruzione non risolti possono essere creati con il comando bu (Imposta punto di interruzione non risolto) o il comando bm quando l'opzione /d non è inclusa. I comandi che disabilitano, abilitano e modificano i punti di interruzione si applicano a tutti i tipi di punti di interruzione. I comandi che visualizzano un elenco di punti di interruzione includono tutti i punti di interruzione e indicano il tipo di ognuno. Per un elenco di questi comandi, vedere Metodi di controllo dei punti di interruzione.
Nella finestra di dialogo Punti di interruzione WinDbg vengono visualizzati tutti i punti di interruzione, che indicano punti di interruzione non risolti con la notazione "u". Questa finestra di dialogo può essere utilizzata per modificare qualsiasi punto di interruzione. È possibile utilizzare la casella di testo Comando in questa finestra di dialogo per creare qualsiasi tipo di punto di interruzione. Se il tipo viene omesso, viene creato un punto di interruzione non risolto. Per informazioni dettagliate, vedere Modifica | Punti di interruzione. Quando si imposta un punto di interruzione usando il mouse nella finestra Disassembly di WinDbg o nella finestra Origine, il debugger crea un punto di interruzione non risolto.