Ich verwende eine Redis- Datenbank und möchte den Inhalt des von der Anwendung verwendeten Arbeitsspeichers untersuchen.
Ich bin der Meinung, dass die Erklärung, warum ich das tun möchte, sinnvoller ist als die Frage, die ich stellen würde.
Redis ist ein einfacher Schlüsselwertspeicher, der Binärdaten speichert. Ich denke, es wäre ein guter Ort, um Dinge wie das Kodieren zu erforschen, und es wäre interessant für mich, Dinge wie das Überfliegen des RAM nach binären Datensätzen und Dinge wie das Suchen nach einfachen Mustern zu tun. Vielleicht möchten Sie eine Baby-Abfragesprache schreiben, die im RAM gesucht hat.
Ich hatte diese Idee, nachdem ich das Kapitel über Abfragesprachen in SICP gelesen hatte .
Irgendwelche Gedanken, wo ich anfangen soll? Zunächst möchte ich das System fragen, in welchem Adressraum diese Anwendung ausgeführt wird.
pmap
diese Informationen so formatiert werden, dass sie besser lesbar sind.Verwenden Sie einen Debugger, dafür sind sie da.
Wenn Sie Ihre eigenen Rollen möchten, geht alles durch
ptrace
.Sie können die Speicherzuordnung eines Prozesses (das Inhaltsverzeichnis für den Speicher) in
/proc/$pid/maps
anzeigen und den gesamten Speicherinhalt auslesen/proc/$pid/mem
. Sie können diese letztere Datei nicht einfach normal öffnen, siehe Wie lese ich unter Linux aus / proc / $ pid / mem?quelle