El mandato kdb
El mandato kdb se puede utilizar para analizar sistemas y archivos de sistema en distintos estados.
El mandato kdb se puede utilizar para analizar lo siguiente:
- Un sistema en ejecución.
Cuando se utiliza para analizar un sistema en ejecución, el mandato kdb abre el archivo especial /dev/pmem , que permite el acceso directo a la memoria física del sistema y omite el mecanismo normal de conversión de direcciones del procesador. El mandato kdb realiza internamente su propia conversión de direcciones utilizando los mismos algoritmos que el depurador de kernel KDB. Esto permite al usuario ver datos por dirección efectiva.
Nota: Sólo el usuario root puede utilizar el mandato kdb para analizar un sistema en ejecución. - Un archivo de volcado del sistema producido por un sistema que se ha estrellado anteriormente.
Cuando un sistema se bloquea, la imagen de vuelco del sistema se crea con la conversión de memoria activada. Como resultado, cualquier memoria física no correlacionada con el espacio de direcciones efectivo en el momento del vuelco no se puede incluir en el archivo de vuelco. En el archivo de volcado sólo se puede incluir la memoria que pertenece al proceso que se estaba ejecutando en el procesador que ha creado la imagen de vuelco. Puesto que todas las direcciones del volcado del sistema ya son direcciones efectivas, el mandato kdb no realiza su conversión de direcciones interna.
Un vuelco del sistema contiene ciertas estructuras de datos críticas. Un vuelco del sistema no contiene todo el espacio de direcciones efectivo. Es posible que el mandato kdb no pueda ver determinadas regiones de memoria. Si alguien intenta acceder a una dirección de memoria no incluida en el vuelco, el mandato kdb imprime un mensaje de aviso.
Al analizar un volcado del sistema, es imprescindible que el comando ' kdb ' utilice la misma versión del archivo UNIX que se estaba ejecutando en el momento del volcado. Para comprobar las indicaciones de fecha y hora del volcado y los archivos UNIX , utilice los mandatos siguientes:
$ what unix | grep _kdb_buildinfo _kdb_buildinfo unix_64 Mar 14 2005 10:24:29 (This is the return that users will get.) $ what dump | grep _kdb_buildinfo _kdb_buildinfo unix_64 Mar 14 2005 10:24:29Las indicaciones de fecha y hora de ambos archivos deben ser idénticas. También es posible comprobar la indicación de fecha y hora del mandato kdb ejecutando los mandatos siguientes:
$ what /usr/sbin/kdb_64 | grep _kdb_buildinfo _kdb_buildinfo unix_64 Mar 4 2005 14:45:20 $ what /usr/sbin/kdb_mp | grep _kdb_buildinfo _kdb_buildinfo unix_mp Mar 4 2005 14:31:53Esta indicación de fecha y hora normalmente será más antigua que la de los archivos de volcado y UNIX . Normalmente, el mandato kdb puede leer el vuelco en esta condición. Sin embargo, si la diferencia de versión entre el mandato kdb y el archivo UNIX es demasiado grande, es posible que kdb no pueda leer el volcado. En este caso, utilice una versión de kdb que esté más cerca de la versión de UNIX que se utiliza.
Nota: Se puede utilizar el submandato cdt o la opción de línea de mandatos -v para determinar exactamente qué regiones del espacio de direcciones efectivo se incluyen en la imagen del sistema. Para obtener más información sobre el submandato CDT , consulte submandato cdt. Para obtener más información sobre la opción de línea de mandatos -v , consulte Mandato kdb.
El mandato kdb contiene un subconjunto de los submandatos que se encuentran en el depurador de kernel KDB. Los submandatos para establecer puntos de interrupción y código de paso único no están disponibles en el mandato kdb . Puesto que el mandato kdb se implementa como un programa de espacio de usuario ordinario, no tiene control sobre los procesadores de un sistema. De forma similar, los submandatos que acceden directamente al hardware (por ejemplo, los submandatos PCI) no están disponibles. Cuando se trabaja con un vuelco del sistema, los submandatos que modifican la memoria no son válidos porque el vuelco del sistema es simplemente una instantánea de la memoria real en un sistema.
La lista completa de submandatos disponibles para el depurador de kernel KDB y el mandato kdb se incluyen en Lista de submandatos.