Sto facendo qualche esperimento e vorrei poter vedere cosa viene salvato nello stack durante una chiamata di sistema (lo stato salvato del processo di terra dell'utente). Secondo lo http://lxr.linux.no/#linux+v2.6.30.1/arch/x86/kernel/entry_32.S, mostra che i vari valori dei registri vengono salvati in corrispondenza di quegli offset specifici per il puntatore dello stack. Ecco il codice che ho cercato di utilizzare per esaminare ciò che viene salvato nello stack (questo è in una chiamata di sistema personalizzato che ho creato):Come determinare i valori salvati nello stack?
asm("movl 0x1C(%esp), %ecx");
asm("movl %%ecx, %0" : "=r" (value));
cui valore è un unsigned long.
A partire da ora, questo valore non è quello previsto (viene visualizzato uno 0 viene salvato per il valore utente di ds).
Sto accedendo correttamente all'offset del puntatore stack?
Un'altra possibilità potrebbe essere possibile utilizzare un debugger come GDB per esaminare il contenuto dello stack mentre si trova nel kernel? Non ho un uso molto esteso con il debug e non sono sicuro di come eseguire il debug del codice all'interno del kernel. Ogni aiuto è molto apprezzato.