Tôi đang cố đọc ngăn xếp của một quá trình con nhưng không có may mắn. Tôi biết có thể sử dụng ptrace
, nhưng ptrace
giao diện của nó cho phép bạn chỉ đọc một từ một lần và tôi đang cố quét một phần lớn hơn của ngăn xếp.
Tôi cũng đã thử đọc /proc/$pid/mem
từ các ràng buộc của ngăn xếp như được trích xuất từ /proc/$pid/maps
tệp sau lần đầu tiên sử dụng ptrace để đính kèm với nó (như được đề xuất ở đây ) nhưng việc đọc vẫn không thành công (ngay cả khi chạy bằng root) mặc dù cùng một mã đã thành công khi thử đọc từ các phần khác nhau của quá trình (ví dụ heap).
Tôi đang làm gì sai? Có lựa chọn nào khác?
waitpid
giữaptrace(PTRACE_ATTACH,…)
vàread
(nếu không có một điều kiện cuộc đua có thể)? Lỗi gìread
trở lại? Có phải đứa trẻ đang làm bất cứ điều gì đặc biệt với ánh xạ bộ nhớ của nó - bạn có thể thử mã của mình với một đứa trẻ đơn giản như thếsleep
nào không?