Korzystam z bazy danych redis i chciałbym poznać zawartość pamięci RAM używanej przez aplikację.
Wydaje mi się, że wyjaśnienie, dlaczego chcę to zrobić, będzie miało więcej sensu niż pytanie, które zadałbym.
Redis to prosty magazyn wartości klucza, w którym przechowywane są dane binarne. Myślę, że byłoby to dobre miejsce do odkrywania takich rzeczy jak kodowanie i byłoby dla mnie interesujące robić rzeczy takie jak przeglądanie pamięci RAM w poszukiwaniu binarnych zestawów danych, takie jak szukanie prostych wzorców; może odkryjesz pomysł napisania dziecięcego języka zapytań wyszukiwanego w pamięci RAM.
Wpadłem na ten pomysł po przeczytaniu rozdziału w SICP na temat języków zapytań.
Masz jakieś przemyślenia, od czego zacząć? Początkowo chcę zapytać system „Podaj mi przestrzeń adresową, w której działa ta aplikacja”.
pmap
formatuje te informacje, aby były bardziej czytelne dla człowieka.Użyj debuggera, po to są.
Jeśli chcesz rzucić własne, wszystko idzie
ptrace
.Możesz zobaczyć mapę pamięci procesu (spis treści dla pamięci)
/proc/$pid/maps
i odczytać całą zawartość pamięci/proc/$pid/mem
. Nie możesz zwyczajnie otworzyć tego drugiego pliku normalnie, zobacz Jak czytać z / proc / $ pid / mem pod Linuksem?źródło