Tôi đang thực hiện một số thử nghiệm và muốn có thể xem những gì được lưu trên ngăn xếp trong suốt cuộc gọi hệ thống (trạng thái đã lưu của quy trình sử dụng đất). Theo http://lxr.linux.no/#linux+v2.6.30.1/arch/x86/kernel/entry_32.S nó cho thấy rằng các giá trị khác nhau của sổ đăng ký được lưu tại các vị trí cụ thể đó cho con trỏ ngăn xếp. Đây là mã tôi đã cố gắng sử dụng để kiểm tra những gì được lưu trên ngăn xếp (đây là trong một cuộc gọi hệ thống tùy chỉnh mà tôi đã tạo):Làm cách nào để xác định giá trị được lưu trên ngăn xếp?
asm("movl 0x1C(%esp), %ecx");
asm("movl %%ecx, %0" : "=r" (value));
giá trị không dài.
Hiện tại, giá trị này không phải là giá trị được mong đợi (nó hiển thị giá trị 0 được lưu cho giá trị người dùng của ds).
Tôi có đang truy cập chính xác phần bù của con trỏ ngăn xếp không?
Một khả năng khác có thể là tôi có thể sử dụng trình gỡ lỗi như GDB để kiểm tra nội dung ngăn xếp trong khi ở hạt nhân? Tôi không có nhiều sử dụng rộng rãi với gỡ lỗi và không chắc chắn về cách gỡ lỗi mã bên trong hạt nhân. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.