Я экспериментирую и хочу видеть, что было сохранено в стеке во время системного вызова (сохраненное состояние пользовательского сухопутного процесса). Согласно http://lxr.linux.no/#linux+v2.6.30.1/arch/x86/kernel/entry_32.S, это показывает, что различные значения регистров сохраняются в этих конкретных смещениях указателю стека. Вот код, который я пытался использовать, чтобы исследовать то, что сохраняется в стеке (это в пользовательской системе вызова я создал):Как определить значения, сохраненные в стеке?
asm("movl 0x1C(%esp), %ecx");
asm("movl %%ecx, %0" : "=r" (value));
где значение без знака долго.
На данный момент это значение не является ожидаемым (оно показывает, что 0 сохраняется для пользовательского значения ds).
Правильно ли я обращаюсь к смещению указателя стека?
Возможно, еще одна возможность использовать отладчик, такой как GDB, для проверки содержимого стека в ядре? Я не очень много использую для отладки и не уверен, как отлаживать код внутри ядра. Буду признателен за любую оказанную помощь.