Estoy experimentando y me gustaría poder ver lo que se guarda en la pila durante una llamada al sistema (el estado guardado del proceso de aterrizaje del usuario). De acuerdo con http://lxr.linux.no/#linux+v2.6.30.1/arch/x86/kernel/entry_32.S, muestra que los diversos valores de registros se guardan en esos desplazamientos particulares al puntero de pila. Aquí está el código que he estado tratando de utilizar para examinar lo que se guarda en la pila (esto es, en una llamada al sistema a medida que he creado):¿Cómo se determinan los valores guardados en la pila?
asm("movl 0x1C(%esp), %ecx");
asm("movl %%ecx, %0" : "=r" (value));
donde el valor es un entero largo sin signo.
A partir de ahora, este valor no es el esperado (se muestra un 0 se guarda para el valor de usuario de ds).
¿Estoy accediendo correctamente al desplazamiento del puntero de la pila?
Otra posibilidad podría ser ¿podría usar un depurador como GDB para examinar el contenido de la pila mientras estoy en el kernel? No tengo mucho uso extensivo con la depuración y no estoy seguro de cómo depurar código dentro del kernel. Cualquier ayuda es muy apreciada.