将linux进程的内存转储到文件中

Modified on: Wed, 13 Nov 2019 20:00:02 +0800

是否可以将为进程分配的当前内存(通过PID)转储到文件中?或以某种方式阅读?

作者:Fragsworth

最佳答案

我不确定如何在不重复执行此操作的情况下将所有内存转储到文件中(如果有人知道让gdb执行此操作的自动方式请告诉我),但以下内容适用于任何一批内存假设你知道pid:

$ cat /proc/[pid]/maps

这将采用格式(示例):

00400000-00421000 r-xp 00000000 08:01 592398                             /usr/libexec/dovecot/pop3-login
00621000-00622000 rw-p 00021000 08:01 592398                             /usr/libexec/dovecot/pop3-login
00622000-0066a000 rw-p 00622000 00:00 0                                  [heap]
3e73200000-3e7321c000 r-xp 00000000 08:01 229378                         /lib64/ld-2.5.so
3e7341b000-3e7341c000 r--p 0001b000 08:01 229378                         /lib64/ld-2.5.so

选择一批内存(例如00621000-00622000),然后使用gdb作为root连接到进程并转储该内存:

$ gdb --pid [pid]
(gdb) dump memory /root/output 0x00621000 0x00622000

然后使用strings命令分析/ root / output,而不是想要整个屏幕上的PuTTY。

作者:slm,James L

相关问答

添加新评论