Condividi tramite


Diagnostica e debug

RDBSS offre una serie di routine per scopi di diagnostica e debug. Queste routine rientrano in due categorie:

  • Eseguire l'asserzione e il debug delle routine

  • Routine di monitoraggio dei riferimenti e di dereferenziazione

Queste routine includono gli elementi nella tabella seguente.

Routine Descrizione

RxAssert

Questa routine invia una stringa di asserzione nelle build archiviate di RDBSS a un debugger del kernel, se ne è installata una. Quando viene usato il file di inclusione rxAssert.h, le chiamate RtlAssert del kernel Windows verranno ridefinite per chiamare anche questa routine RxAssert .

Per le build di vendita al dettaglio, le chiamate a questa routine verificheranno bug.

RxDbgBreakPoint

Questa routine genera un'eccezione gestita dal debugger del kernel se ne è installata una; in caso contrario, viene gestito dal sistema di debug.

RxpTrackDereference

Questa routine viene usata per tenere traccia di una richiesta per fare riferimento a SRV_CALL, NET_ROOT, V_NET_ROOT, FOBX, FCB e SRV_OPEN strutture nelle compilazioni controllate. È possibile accedere a un log di queste richieste di riferimento tramite il sistema di registrazione e WMI. Questa routine non esegue l'operazione di dereferenziazione.

Per le build di vendita al dettaglio, questa routine non esegue alcuna operazione.

RxpTrackReference

Questa routine viene usata per monitorare una richiesta di dereferenziazione delle strutture SRV_CALL, NET_ROOT, V_NET_ROOT, FOBX, FCB e SRV_OPEN nei build con controllo. È possibile accedere a un log di queste richieste di dereferenziazione tramite il sistema di registrazione e WMI. Questa routine non esegue l'operazione di riferimento.

Per le build di vendita al dettaglio, questa routine non esegue alcuna operazione.

Oltre alle routine elencate nella tabella precedente, per il debug vengono definite diverse macro che chiamano queste routine. Queste macro, elencate nella tabella seguente, forniscono un wrapper intorno alle routine RxReference o RxDereference usate per le operazioni di gestione della struttura di file su SRV_CALL, NET_ROOT, V_NET_ROOT, FOBX, FCB e SRV_OPEN strutture. Queste macro chiamano prima la routine RxpTrackReference o RxpTrackDereference corrispondente per registrare le informazioni di diagnostica prima di chiamare la routine RxReference o RxDeference corrispondente. È possibile accedere a un log delle richieste di riferimento e dereferenziazione tramite il sistema di registrazione RDBSS e WMI.

Macro Descrizione

RxDereferenceAndFinalizeNetFcb (Fcb ,RxContext, RecursiveFinalize, ForceFinalize)

Questa macro viene utilizzata per tenere traccia delle operazioni di dereferenziazione nelle strutture FCB.

Si noti che questa macro manipola il conteggio dei riferimenti e restituisce anche lo stato della chiamata di finalizzazione.

RxDereferenceNetFcb (Fcb)

Questa macro viene utilizzata per tenere traccia delle operazioni di dereferenziazione nelle strutture FCB.

Si noti che questa macro modifica il conteggio dei riferimenti e restituisce anche lo stato della chiamata di dereferenziazione finale.

RxDereferenceNetFobx (Fobx,LockHoldingState)

Questa macro viene utilizzata per tenere traccia delle operazioni di dereferenziazione nelle strutture FOBX.

RxDereferenceNetRoot (NetRoot, LockHoldingState)

Questa macro viene utilizzata per tenere traccia delle operazioni di dereferenziazione sulle strutture NET_ROOT.

RxDereferenceSrvCall (SrvCall, LockHoldingState)

Questa macro viene usata per tenere traccia delle operazioni di dereferenziazione sulle strutture SRV_CALL.

RxDereferenceSrvOpen ( SrvOpen, LockHoldingState)

Questa macro viene utilizzata per tenere traccia delle operazioni di dereferenziazione sulle strutture SRV_OPEN.

RxDereferenceVNetRoot ( VNetRoot, LockHoldingState)

Questa macro viene utilizzata per tenere traccia delle operazioni di dereferenziazione sulle strutture NET_ROOT.

RxReferenceNetFcb (Fcb)

Questa macro viene usata per tenere traccia delle operazioni di riferimento sulle strutture FCB.

RxReferenceNetFobx (Fobx)

Questa macro viene utilizzata per tenere traccia delle operazioni di riferimento sulle strutture FOBX.

RxReferenceNetRoot (NetRoot)

Questa macro viene utilizzata per tenere traccia delle operazioni di riferimento sulle strutture NET_ROOT.

RxReferenceSrvCall (SrvCall)

Questa macro viene utilizzata per tenere traccia delle operazioni di riferimento sulle strutture SRV_CALL che non sono a livello DPC.

RxReferenceSrvCallAtDpc (SrvCall)

Questa macro viene usata per tenere traccia delle operazioni di riferimento sulle strutture SRV_CALL a livello DPC.

RxReferenceSrvOpen (SrvOpen)

Questa macro viene utilizzata per tenere traccia delle operazioni di riferimento sulle strutture SRV_OPEN.

RxReferenceVNetRoot (VNetRoot)

Questa macro viene utilizzata per tenere traccia delle operazioni di riferimento sulle strutture V_NET_ROOT.