Compartir a través de


Seguimiento de referencias de objetos

La característica Seguimiento de Referencias de Objetos registra seguimientos de pila secuenciales cada vez que se incrementa o disminuye un contador de referencia de objetos. Las trazas pueden ayudarle a detectar errores de referencia de objetos, como la desreferenciación doble, el fallo en la referencia y el fallo al desreferenciar objetos. Esta característica solo se admite en Windows Vista y versiones posteriores de Windows.

Para obtener información sobre cómo configurar la característica seguimiento de referencia de objetos en el cuadro de diálogo Marcas globales , vea Configurar el seguimiento de referencia de objetos. Para obtener información sobre cómo configurar la característica de seguimiento de referencia de objetos en el símbolo del sistema, vea Comandos GFlags. Para obtener un ejemplo, vea Ejemplo 15: Uso del seguimiento de referencia de objetos.

Los seguimientos de referencia de objetos son más útiles cuando sospecha que no se está referenciando o desreferenciando correctamente un objeto concreto, normalmente porque el aumento del uso del grupo de memoria indica que se está filtrando un objeto o que un proceso o una sesión no se puede finalizar, aunque su recuento de identificadores sea cero. A diferencia de los seguimientos que se registran en los registros para su revisión posterior, los seguimientos de referencia de objetos están diseñados para usarse en tiempo real, mientras se ejecuta el proceso y se hace referencia al objeto y se desreferencia. Puede ver un seguimiento de referencia de objeto en el depurador mediante la extensión del depurador !obtrace. Dado que esta extensión requiere una dirección de objeto especificada, debe saber con antelación qué objeto es el origen probable del error.

Las reglas siguientes se aplican al seguimiento de referencia de objetos:

  • Solo puede ejecutar una traza de referencia de objeto a la vez.

  • Dado que un seguimiento de todo el kernel no es práctico, debe limitar el seguimiento a los objetos creados con etiquetas de grupo especificadas o a objetos creados por un proceso especificado (indicado por un nombre de archivo de imagen) o ambos.

  • Solo puede especificar un archivo de imagen para cada seguimiento. Si especifica un archivo de imagen, el seguimiento se limita a los objetos creados por los procesos que representa la imagen. Los objetos a los que hace referencia el proceso, pero que se crean mediante un proceso diferente, no se rastrean.

  • Puede especificar un máximo de 16 etiquetas de grupo para cada seguimiento. Se realiza un seguimiento de los objetos con cualquiera de las etiquetas de grupo especificadas.

  • Si especifica un archivo de imagen y una o varias etiquetas de grupo, el seguimiento se limita a los objetos creados por el proceso y tienen cualquiera de las etiquetas de grupo especificadas.

  • El seguimiento de referencia de objetos no puede realizar un seguimiento de los procesos que ya se están ejecutando cuando se inicia un seguimiento. El seguimiento incluye solo los objetos de los procesos que se inician después de que el seguimiento comience.

  • Los objetos marcados para el seguimiento se rastrean hasta que el objeto se destruye o se deshabilita el seguimiento. De forma predeterminada, los seguimientos de un objeto solo se mantienen hasta que se destruye el objeto, pero puede especificar un seguimiento "permanente" (/p) donde se conserva el seguimiento hasta que se deshabilita el seguimiento.

  • Puede almacenar la configuración de seguimiento de referencia de objetos como una configuración del Registro o una configuración de marca de kernel (tiempo de ejecución). Si tiene tanto la configuración del registro como los ajustes de banderas del núcleo, la configuración en tiempo de ejecución tiene prioridad, pero se pierde al apagar o reiniciar el equipo.