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

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

所以举例来说,我已经尝试了下面的代码,它不断给我IO错误:

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

大多数情况下,我只是想反复抛弃一个流程的内存并随着时间的推移寻找变化。 如果这是做到这一点的正确方法,那么我的问题是什么? 还是有更合适的方法来做到这一点?


从python - subprocess模块​​调用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

并通过输出进行解析以查看其内存利用率


大多数情况下,我只是想反复抛弃一个流程的内存并随着时间的推移寻找变化。 如果这是做到这一点的正确方法,那么我的问题是什么? 还是有更合适的方法来做到这一点?

您可能对gdb的反向调试感兴趣,它会记录对进程内存的所有更改。 这里是教程(谷歌缓存)。

如果你想使用原始录音工具,还有Robert O'Callahan的Chronicle / Chronomancer工作。

链接地址: http://www.djcxy.com/p/66957.html

上一篇: How can I read the memory of a process in python in linux?

下一篇: Does WebApi support application/x