转储进程的内存

mat*_*thk 8 c linux bash memory-dump

读取/ proc/$ PID/maps时,您将获得映射的内存区域.是否可以倾倒这个地区之一?

$ 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]...
Run Code Online (Sandbox Code Playgroud)

谢谢

Mat*_*ner 12

罗!打电话ptrace()PTRACE ATTACH.然后打开/proc/<pid>/mem,寻找区域偏移量,并读取给定的区域长度/proc</pid>/maps.

这是我编写的一个程序,用C语言编写.这是我编写的一个模块,用Python(和ptrace绑定)完成.完成后,将进程的所有区域转储到文件的程序.

请享用!


nmi*_*els 5

您可以将GDB的过程,然后倾倒的起始位置l对于这个长度X字的内存区域:x/Xw L.

在开始流程时附加gdb很简单:gdb ./executable然后run.如果您需要附加到正在运行的进程,请启动gdb,然后gdb attach pidpid是您关心的进程ID.