如何在linux中读取python中进程的内存?

时间:2012-12-10 19:08:20

标签: python linux ptrace

我正在尝试使用python和python ptrace来读取外部进程的内存。我需要完全在python中工作,并且我一直在尝试读取并打印出linux中进程的内存。

例如,我尝试了以下代码,它不断给出IO错误:

proc_mem = open("/proc/%i/mem" % process.pid, "r")
print proc_mem.read()
proc_mem.close()

大多数情况下,我只想反复转储进程的内存并查找随时间变化的内容。如果这是正确的方法,那么我的问题是什么?或者有更合适的方法吗?

2 个答案:

答案 0 :(得分:3)

从python - subprocess module

调用shell命令
import subprocess

# ps -ux | grep 1842 (Assuming 1842 is the process id. replace with process id you get)

p1 = subprocess.Popen(["ps", "-ux"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["grep", "1842"], stdin=p1.stdout, stdout=subprocess.PIPE)
p1.stdout.close()  # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
print output

并解析输出以查看其内存利用率

答案 1 :(得分:1)

  

大多数情况下,我只想反复转储进程的内存并查找随时间变化的内容。如果这是正确的方法,那么我的问题是什么?或者有更合适的方法吗?

您可能对gdb的reverse debugging感兴趣,它会记录对进程内存的所有更改。这是the tutorialgoogle cache)。

如果你想使用原始录音工具,还有Robert O'CallahanChronicle / Chronomancer work