Dump memory eines Prozesses
Beim Auslesen der /proc/$PID/maps, bekommen Sie die zugeordneten Speicherbereiche.
Gibt es einen Weg, um Sie dump einer dieser Regionen?
$ cat /proc/18448/maps
...[snip]...
0059e000-005b1000 r-xp 00000000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
005b1000-005b2000 r--p 00012000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
005b2000-005b3000 rw-p 00013000 08:11 40 /usr/local/lib/libgstlightning.so.0.0.0
...[snip]...
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nah! Rufen Sie
ptrace()
mitPTRACE ATTACH
. Dann öffnen/proc/<pid>/mem
, suchen für die region offset und Lesen Sie die Länge der region, wie Sie im/proc</pid>/maps
.Hier ein Programm, das ich schrieb, dass tut es in C. Hier ist eine Modul schrieb ich, dass macht es in Python (und der ptrace-Bindung). Für das Ziel, ein Programm sichert alle Regionen eines Prozesses auf Dateien.
Genießen!
Können Sie gdb an den Prozess dann dump-Speicherbereich der Länge X Wörter beginnend bei der Position L mit diesem:
x/Xw L
.Anbringen gdb, wenn Sie starten Sie Ihren Prozess ist einfach:
gdb ./executable
dannrun
. Wenn Sie brauchen, um zu befestigen, um einen Laufenden Prozess, starten Sie gdb danngdb attach pid
wobei pid die Prozess-ID, die Sie interessieren.gdb -p <pid>
.Unter Verwendung von dd(1):