Compartir a través de


Información general sobre el comando GFlags

Para obtener información general sobre cómo instalar y localizar gflags.exe, consulte GFlags.

Puede usar los comandos GFlags y el cuadro de diálogo Marcas globales indistintamente.

Uso de comandos de GFlags

Para usar GFlags, escriba los siguientes comandos en la línea de comandos.

Para abrir el cuadro de diálogo GFlags:

gflags

Para establecer o borrar marcas globales en el registro:

gflags /r [{+ | -}Flag [{+ | -}Flag...]]

Para establecer o borrar marcas globales para la sesión actual:

gflags /k [{+ | -}Flag [{+ | -}Flag...]]

Para establecer o borrar marcas globales para un archivo de imagen:

gflags /i ImageFile [{+ | -}Flag [{+ | -}Flag...]]
gflags /i ImageFile /tracedb SizeInMB

Para establecer o borrar la característica Grupo especial (Windows Vista y versiones posteriores)

gflags {/r | /k} {+ | -}spp {PoolTag | 0xSize}

Para habilitar o deshabilitar la característica seguimiento de referencia de objetos (Windows Vista y versiones posteriores)

gflags {/ro | /ko} [/p] [/i ImageFile | /t PoolTag;[PoolTag...]]
gflags {/ro | /ko} /d

Para habilitar y configurar la comprobación del montón de páginas:

gflags /p /enable ImageFile  [ /full [/backwards] | /random Probability | /size SizeStart SizeEnd | /address AddressStart AddressEnd | /dlls DLL [DLL...] ] 
[/debug ["DebuggerCommand"] | /kdebug] [/unaligned] [/notraces] [/fault Rate [TimeOut]] [/leaks] [/protect] [/no_sync] [/no_lock_checks] 

Para deshabilitar la comprobación del montón de páginas:

gflags /p [/disable ImageFile] [/?]

Para mostrar ayuda:

gflags /?

Parámetros

Bandera
Especifica una abreviatura de tres letras (FlagAbbr) o un valor hexadecimal (FlagHex) que representa una característica de depuración. Las abreviaturas y los valores hexadecimales se muestran en la tabla de marcas de GFlags.

Use uno de los siguientes formatos de marca:

Formato Descripción

{+ | -}FlagAbbr

Establece (+) o borra (-) la marca representada por la abreviatura de marca. Sin un símbolo más (+) o menos (-), el comando no tiene ningún efecto.

[+ | -]FlagHex

Agrega (+) o resta (-) el valor hexadecimal de una marca. Se establece una marca cuando su valor se incluye en la suma. Agregar (+) es el valor predeterminado. Escriba un valor hexadecimal (sin 0x) que represente una sola marca o escriba la suma de valores hexadecimales para varias marcas.

ImageFile
Especifica el nombre de un archivo ejecutable, incluida la extensión de nombre de archivo (por ejemplo, notepad.exe o mydll.dll).

/r
Registro. Muestra o cambia las marcas de depuración en todo el sistema almacenadas en el registro. Esta configuración surte efecto cuando reinicie Windows y siga siendo efectiva hasta que las cambie.

Sin parámetros adicionales, gflags /r muestra las marcas de todo el sistema establecidas en el registro.

/k
Configuración de la marca de kernel. Muestra o cambia las marcas de depuración en todo el sistema para esta sesión. Esta configuración es efectiva inmediatamente, pero se pierde cuando Windows se apaga. La configuración afecta a los procesos iniciados una vez completado este comando.

Sin parámetros adicionales, gflags /k muestra marcas de todo el sistema establecidas para la sesión actual.

/Yo
Configuración del archivo de imagen. Muestra o cambia las marcas de depuración de un proceso determinado. Esta configuración se almacena en el Registro. Son eficaces para todas las nuevas instancias de este proceso y permanecen vigentes hasta que se cambian.

Sin parámetros adicionales, gflags /i ImageFile muestra las marcas establecidas para el proceso especificado.

/tracedb SizeInMB
Establece el tamaño máximo de la base de datos de seguimiento de pila en modo de usuario para el proceso. Para usar este parámetro, se debe establecer la marca Create user mode stack trace database (ust) para el proceso.

SizeInMB es un número entero que representa el número de megabytes en unidades decimales. El valor predeterminado es el tamaño mínimo, 8 MB; no hay ningún tamaño máximo. Para revertir al tamaño predeterminado, establezca SizeInMB en 0.

Spp
(Windows Vista y versiones posteriores). Establece o borra la característica Grupo especial. Para obtener un ejemplo, vea Ejemplo 14: Configuración del grupo especial.

PoolTag
(Windows Vista y versiones posteriores). Especifica una etiqueta de grupo para la característica Grupo especial . Use solo con la marca spp .

Escriba un patrón de cuatro caracteres para PoolTag, como Tag1. Puede incluir los caracteres comodín ? (sustituto de cualquier carácter único) y * (sustituto de varios caracteres). Por ejemplo, Fat* o Av?4. Las etiquetas de grupo siempre distinguen mayúsculas de minúsculas.

Tamaño 0x
(Windows Vista y versiones posteriores). Especifica un intervalo de tamaño para la característica Grupo especial. Use solo con la marca spp . Para obtener instrucciones sobre cómo seleccionar un valor de tamaño, vea "Seleccionar un tamaño de asignación" en grupo especial.

/Ro
Habilita, deshabilita y muestra la configuración de seguimiento de referencia de objetos en el Registro. Para realizar un cambio en esta configuración, debe reiniciar Windows.

Sin parámetros adicionales, /ro muestra la configuración de seguimiento de referencia de objetos en el Registro.

Para habilitar el seguimiento de referencia de objetos, debe incluir al menos una etiqueta de grupo (/t PoolTag) o un archivo de imagen (/i ImageFile) en el comando . Para obtener más información, vea Ejemplo 15: Uso del seguimiento de referencia de objetos.

En la tabla siguiente se enumeran los subparámetros que son válidos con /ro.

/t PoolTags

Limita el seguimiento a objetos con las etiquetas de grupo especificadas. Use un punto y coma (;) para separar los nombres de etiqueta. Escriba hasta 16 etiquetas de grupo.

Escriba un patrón de cuatro caracteres para PoolTags, como Tag1.

Si especifica más de una etiqueta de grupo, Windows realiza un seguimiento de los objetos con cualquiera de las etiquetas de grupo especificadas.

Si no especifica ninguna etiqueta de grupo, Windows realiza un seguimiento de todos los objetos creados por la imagen.

/i ImageFile

Limita el seguimiento a objetos creados por procesos con el archivo de imagen especificado. Solo puede especificar un archivo de imagen con el parámetro /i .

Escriba un nombre de archivo de imagen, como notepad.exe, con hasta 64 caracteres. "System" y "Idle" no son nombres de imagen válidos.

Si no especifica un archivo de imagen, Windows realiza un seguimiento de todos los objetos con las etiquetas de grupo especificadas. Si especifica un archivo de imagen (/i) y una o varias etiquetas de grupo (/t), Windows realiza un seguimiento de los objetos con cualquiera de las etiquetas de grupo especificadas creadas por la imagen especificada.

/d

Borra la configuración de la característica Seguimiento de referencia de objetos. Cuando se usa con /ro, borra la configuración del Registro.

/p

Permanente. Los datos de seguimiento se conservan hasta que el seguimiento de referencia de objetos está deshabilitado o el equipo se apaga o reinicia. De forma predeterminada, los datos de seguimiento de un objeto se descartan cuando se destruye el objeto.

/ko
Habilita, deshabilita y muestra la configuración de seguimiento de referencia de objetos de marca de kernel (tiempo de ejecución). Los cambios en esta configuración son efectivos inmediatamente, pero se pierden cuando el sistema se apaga o se reinicia. Para obtener más información, vea Ejemplo 15: Uso del seguimiento de referencia de objetos.

Sin parámetros adicionales, /ko muestra la configuración de seguimiento de referencia de objetos de marca de kernel (tiempo de ejecución).

Para habilitar el seguimiento de referencia de objetos, debe incluir al menos una etiqueta de grupo (/t PoolTag) o un archivo de imagen (/i ImageFile) en el comando .

En la tabla siguiente se enumeran los subparámetros que son válidos con /ko.

/t PoolTags

Limita el seguimiento a objetos con las etiquetas de grupo especificadas. Use un punto y coma (;) para separar los nombres de etiqueta. Escriba hasta 16 etiquetas de grupo.

Escriba un patrón de cuatro caracteres para PoolTags, como Tag1.

Si especifica más de una etiqueta de grupo, Windows realiza un seguimiento de los objetos con cualquiera de las etiquetas de grupo especificadas.

Si no especifica ninguna etiqueta de grupo, Windows realiza un seguimiento de todos los objetos creados por la imagen.

/i ImageFile

Limita el seguimiento a objetos creados por procesos con el archivo de imagen especificado. Solo puede especificar un archivo de imagen con el parámetro /i .

Si no especifica un archivo de imagen, Windows realiza un seguimiento de todos los objetos con las etiquetas de grupo especificadas.

Si especifica un archivo de imagen (/i) y una o varias etiquetas de grupo (/t), Windows realiza un seguimiento de los objetos con cualquiera de las etiquetas de grupo especificadas creadas por la imagen especificada.

/d

Borra la configuración de la característica Seguimiento de referencia de objetos. Cuando se usa con /ro, borra la configuración del Registro.

/p

Permanente. Los datos de seguimiento se conservan hasta que el seguimiento de referencia de objetos está deshabilitado o el equipo se apaga o reinicia. De forma predeterminada, los datos de seguimiento de un objeto se descartan cuando se destruye el objeto.

/p
Establece las opciones de comprobación del montón de página para un proceso.

Sin parámetros adicionales, gflags /p muestra una lista de archivos de imagen para los que está habilitada la comprobación del montón de páginas.

La comprobación del montón de páginas supervisa las operaciones dinámicas de memoria del montón, incluidas las operaciones de asignación y las operaciones libres, y provoca un salto del depurador cuando detecta un error de montón.

/inutilizar ImageFile
Desactiva la comprobación del montón de páginas (estándar o completa) para el archivo de imagen especificado.

Este comando equivale a desactivar la marca Habilitar montón de páginas (hpa) para un proceso (gflags /i ImageFile -hpa). Puede usar los comandos indistintamente.

/habilitar ImageFile
Activa la comprobación del montón de páginas para el archivo de imagen especificado.

De forma predeterminada, el parámetro /enable activa la comprobación del montón de página estándar para el archivo de imagen. Para habilitar la comprobación del montón de página completa para el archivo de imagen, agregue el parámetro /full al comando o use el parámetro /i con la marca +hpa .

/lleno
Activa la comprobación del montón de página completa para el proceso. La comprobación del montón de página completa coloca una zona de memoria virtual reservada al final de cada asignación.

El uso de este parámetro es equivalente a activar la marca Habilitar montón de páginas (hpa) para un proceso (gflags /i ImageFile +hpa). Puede usar los comandos indistintamente.

/hacia atrás
Coloca la zona de memoria virtual reservada al principio de una asignación, en lugar de al final. Como resultado, el depurador intercepta las saturaciones al principio del búfer, en lugar de las que se encuentran al final del búfer. Válido solo con el parámetro /full .

/aleatorio Probabilidad
Elige la comprobación del montón de páginas completa o estándar para cada asignación, en función de la probabilidad especificada.

La probabilidad es un entero decimal comprendido entre 0 y 100 que representa la probabilidad de comprobación del montón de página completa. Una probabilidad de 100 es la misma que el uso del parámetro /full . Una probabilidad de 0 es la misma que el uso de la comprobación del montón de páginas estándar.

/tamaño SizeStart SizeEnd
Habilita la comprobación del montón de página completa para las asignaciones dentro del intervalo de tamaño especificado y habilita la comprobación del montón de páginas estándar para todas las demás asignaciones por el proceso.

SizeStart y SizeEnd son enteros decimales. El valor predeterminado es la comprobación del montón de páginas estándar para todas las asignaciones.

/dirección AddressStart AddressEnd
Habilita la comprobación del montón de página completa para la memoria asignada mientras que una dirección de retorno en el intervalo de direcciones especificado se encuentra en la pila de llamadas en tiempo de ejecución. Habilita la comprobación del montón de páginas estándar para todas las demás asignaciones por el proceso.

Para usar esta característica, especifique un intervalo que incluya las direcciones de todas las funciones que llaman a la función con la asignación sospechosa. La dirección de la función de llamada estará en la pila de llamadas cuando se produzca la asignación sospechosa.

AddressStart y AddressEnd especifican el intervalo de direcciones buscado en seguimientos de pila de asignación. Las direcciones se especifican en formato hexadecimal, como 0xAABBCCDD.

En Windows Server 2003 y sistemas anteriores, el parámetro /address solo es válido en equipos basados en x86. En Windows Vista, es válido en todas las arquitecturas admitidas.

/dlls DLL[, DLL...]
Habilita la comprobación del montón de página completa para las asignaciones solicitadas por los archivos DLL especificados y la comprobación del montón de páginas estándar para todas las demás asignaciones del proceso.

DLL es el nombre de un archivo binario, incluida su extensión de nombre de archivo. El archivo especificado debe ser una biblioteca de funciones que el proceso se carga durante la ejecución.

/depurar
Inicia automáticamente el proceso especificado por el parámetro /enable en un depurador.

De forma predeterminada, este parámetro usa el depurador NTSD con la línea de comandos ntsd -g -G -x y con el montón de página habilitado, pero puede usar la variable DebuggerCommand para especificar un depurador y una línea de comandos diferentes.

Para obtener información sobre NTSD, consulte Depuración mediante CDB y NTSD.

Esta opción es útil para los programas que son difíciles de iniciar desde un símbolo del sistema y los iniciados por otros procesos.

"DebuggerCommand"
Especifica un depurador y el comando enviado al depurador. Esta cadena entre comillas puede incluir una ruta de acceso completa al depurador, el nombre del depurador y los parámetros de comando que interpreta el depurador. Las comillas son necesarias.

Si el comando incluye una ruta de acceso al depurador, la ruta de acceso no puede contener otras comillas. Si aparecen otras comillas, el shell de comandos (cmd.exe) malinterpretará el comando.

/kdebug
Inicia automáticamente el proceso especificado por el parámetro /enable en el depurador NTSD con la línea de comandos ntsd -g -G -x, con el montón de páginas habilitado y con el control ntSD redirigido al depurador de kernel.

Para obtener información sobre NTSD, consulte Depuración mediante CDB y NTSD.

/unligned
Alinea el final de cada asignación en un límite de fin de página, aunque lo haga, significa que la dirección inicial no está alineada en un bloque de 8 bytes. De forma predeterminada, el administrador del montón garantiza que la dirección inicial de una asignación esté alineada en un bloque de 8 bytes.

Esta opción se usa para detectar errores desactivados de un byte. Cuando este parámetro se usa con el parámetro /full , la zona de memoria virtual reservada comienza justo después del último byte de la asignación y se produce un error inmediato cuando un proceso intenta leer o escribir incluso un byte más allá de la asignación.

/decommit
Esta opción ya no es válida. Se acepta, pero se omite.

El programa PageHeap (pageheap.exe) incluido en Windows 2000 implementó la comprobación del montón de página completa colocando una página inaccesible después de una asignación. En esa herramienta, el parámetro /decommit sustituyó una zona de memoria virtual reservada para la página inaccesible. En esta versión de GFlags, siempre se usa una zona de memoria virtual reservada para implementar la comprobación del montón de página completa.

/notraces
Especifica que no se guardan los seguimientos de la pila en tiempo de ejecución.

Esta opción mejora ligeramente el rendimiento, pero hace que la depuración sea mucho más difícil. Este parámetro es válido, pero no se recomienda su uso.

/culpa
Obliga a que las asignaciones de memoria del programa produzcan errores a la velocidad especificada y después del tiempo de espera especificado.

Este parámetro inserta errores de asignación del montón en el archivo de imagen que se está probando (una práctica conocida como "inyección de errores") para que algunas asignaciones de memoria produzcan un error, como podría ocurrir cuando el programa se ejecuta en condiciones de memoria baja. Esta prueba ayuda a detectar errores en el control de errores de asignación, como errores al liberar recursos.

Tipo

Especifica un entero decimal del 1 (,01 %) al 10000 (100 %) que representa la probabilidad de que se produzca un error en una asignación. El valor predeterminado es 100 (1 %).

TimeOut

Determina el intervalo de tiempo entre el inicio del programa y el inicio de las rutinas de inyección de errores.

TimeOut se mide en segundos. El valor predeterminado es 5 (segundos).

/Fugas
Comprueba si hay pérdidas de montón cuando finaliza un proceso.

El parámetro /leaks deshabilita el montón de página completa. Cuando se usa /leaks , el parámetro /full y los parámetros que modifican el parámetro /full , como /backwards, se omiten y GFlags realiza la comprobación del montón de páginas estándar con una comprobación de fuga.

/proteger
Protege las estructuras internas del montón. Esta prueba se usa para detectar daños aleatorios en el montón. Puede ralentizar significativamente la ejecución.

/no_sync
Comprueba si hay acceso no sincronizado. Este parámetro produce una interrupción si detecta que se accede a un montón creado con la marca HEAP_NO_SERIALIZE por subprocesos diferentes.

No use esta marca para depurar un programa que incluya un administrador de montón personalizado. Las funciones que sincronizan el acceso al montón hacen que el comprobador del montón de página notifique errores de sincronización que no existen.

/no_lock_checks
Deshabilita el comprobador de sección crítica.

/?
Muestra ayuda para GFlags. Con /p, /? muestra ayuda para las opciones de comprobación del montón de páginas en GFlags.

Comentarios

Al escribir gflags sin parámetros , se abre el cuadro de diálogo Marcas globales.

Al escribir gflags /p sin parámetros adicionales se muestra una lista de programas que tienen habilitada la comprobación del montón de páginas.

Para borrar todas las marcas, establezca Marca en -FFFFFFFF. (Configuración La marca a 0 agrega cero al valor de marca actual. No borra todas las marcas).

Al establecer Marca para un archivo de imagen en FFFFFFFF, Windows borra todas las marcas y elimina la entrada GlobalFlag en la subclave del Registro para el archivo de imagen. La subclave permanece.

Los parámetros /full, /random, /size, /address y /dlls del montón de páginas /enable determinan qué asignaciones están sujetas a la comprobación del montón de páginas y al método de comprobación usado. Solo puede usar uno de estos parámetros en cada comando. El valor predeterminado es la comprobación del montón de páginas estándar de todas las asignaciones del proceso. Los parámetros restantes establecen opciones para la comprobación del montón de páginas.

Las características del montón de páginas en GFlags solo supervisan las asignaciones de memoria del montón de memoria que usan las funciones estándar del administrador de montón de Windows (HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new[ ]o sus funciones de desasignación correspondientes), o aquellas que usan operaciones personalizadas que llaman a las funciones del administrador de montón estándar.

Para determinar si la comprobación del montón de páginas completa o estándar está habilitada para un programa, en la línea de comandos, escriba gflags /p. En la pantalla resultante, los seguimientos indican que la comprobación del montón de páginas estándar está habilitada para el programa y los seguimientos completos indican que la comprobación del montón de página completa está habilitada para el programa.

El parámetro /enable establece la marca Habilitar montón de páginas (hpa) para el archivo de imagen en el Registro. Sin embargo, el parámetro /enable activa la comprobación del montón estándar para el archivo de imagen de forma predeterminada, a diferencia del parámetro /i con la marca +hpa , que activa la comprobación de montón completa para un archivo de imagen.

La comprobación del montón de páginas estándar coloca patrones aleatorios al final de una asignación y examina los patrones cuando se libera un bloque de montón. La comprobación del montón de página completa coloca una zona de memoria virtual reservada al final de cada asignación.

La comprobación del montón de página completa puede consumir memoria del sistema rápidamente. Para habilitar la comprobación del montón de página completa para procesos que consumen mucha memoria, use el parámetro /size o /dlls .

Después de usar marcas globales para la depuración, envíe un comando gflags /p /disable para desactivar la comprobación del montón de páginas y eliminar las entradas del Registro asociadas. De lo contrario, las entradas que lee el depurador permanecen en el Registro. No puede usar el comando gflags /i hpa para esta tarea, ya que desactiva la comprobación del montón de páginas, pero no elimina las entradas del Registro.

De forma predeterminada, en Windows Vista y versiones posteriores de Windows, la configuración específica del programa (marcas de archivo de imagen y la configuración de comprobación del montón de páginas) se almacena en la cuenta de usuario actual.

Esta versión de GFlags incluye las opciones -v , que permiten desarrollar características para GFlags. Sin embargo, estas características aún no están completas y, por lo tanto, no están documentadas.