Linux

將 linux 程序的記憶體轉儲到文件中

  • March 11, 2020

是否可以將目前為程序分配的記憶體(按 PID)轉儲到文件中?或者以某種方式閱讀它?

我不確定您如何將所有記憶體轉儲到文件而不重複執行此操作(如果有人知道讓 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 遍布整個螢幕。

引用自:https://serverfault.com/questions/173999