Lấy vùng nhớ của process trên hệ điều hành linux

Các bạn giúp mình:
Cho PID của 1 process làm cách nào để lấy địa chỉ đầu và cuối của vùng heap, data, code, stack( đầu thui) của process. Thanks.

Nếu mình nhớ không nhầm thì không dùng lệnh để lấy được vì OS phân quyền. Bạn thử dùng lệnh này xem sao: gcore {pid} với {pid} là process_id.

Nếu dùng shell thì có thể dùng lệnh: cat /proc/{id}/mem và /proc/{pid}/maps để lấy các thông số về memory mà bạn cần. Tuy nhiên, cần attackh shell này vào trong process nhờ lệnh ptrace.
(à, cái này chỉ ở trên Linux, còn Windows và Macs thì chưa thử).

Để mai nếu rảnh viết shell theo yêu cầu của bạn xem sao (trên cả 3 OS).
Mình thấy ứng dụng Activity Monitor (MacOS) nó đọc được các sample, offset, …

2 Likes

Chào bạn, mình cũng đang cần tìm hiểu sâu về các lệnh trên linux, cho mình hỏi sâu hơn về việc bạn attach shell vào process nhờ lệnh ptrace ? cái này mình chưa rõ ptrace ntn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?