Como determinar os valores salvos na pilha?

Estou fazendo algumas experiências e gostaria de poder ver o que é salvo na pilha durante uma chamada do sistema (o estado salvo do processo de aterrissagem do usuário). De acordo comhttp://lxr.linux.no/#linux+v2.6.30.1/arch/x86/kernel/entry_32.S mostra que os vários valores dos registradores são salvos nesses deslocamentos específicos no ponteiro da pilha. Aqui está o código que tenho tentado usar para examinar o que está salvo na pilha (isso está em uma chamada de sistema personalizada que eu criei):

asm("movl 0x1C(%esp), %ecx");
asm("movl %%ecx, %0" : "=r" (value));

onde o valor é um longo sem sinal.

No momento, esse valor não é o esperado (está mostrando um 0 salvo para o valor do usuário de ds).

Estou acessando corretamente o deslocamento do ponteiro da pilha?

Outra possibilidade seria: eu poderia usar um depurador como o GDB para examinar o conteúdo da pilha enquanto estava no kernel? Não tenho muito uso extensivo com depuração e não tenho certeza de como depurar código dentro do kernel. Qualquer ajuda é muito apreciada.

questionAnswers(3)

yourAnswerToTheQuestion