7

pythonとpythonptraceを使用して、外部プロセスのメモリを読み取ろうとしています。私は完全にPythonで作業する必要があり、Linuxでプロセスのメモリを読み取って印刷しようとしています。

たとえば、次のコードを試しましたが、IOエラーが発生し続けます。

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

ほとんどの場合、プロセスのメモリを繰り返しダンプして、時間の経過とともに変化を探したいだけです。これがこれを行う正しい方法である場合、私の問題は何ですか?または、これを行うためのより適切な方法はありますか?

4

2 に答える 2

3

Pythonからシェルコマンドを呼び出す-サブプロセスモジュール

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

出力を解析して、メモリ使用率を確認します

于 2012-12-10T19:40:19.210 に答える
1

ほとんどの場合、プロセスのメモリを繰り返しダンプして、時間の経過とともに変化を探したいだけです。これがこれを行う正しい方法である場合、私の問題は何ですか?または、これを行うためのより適切な方法はありますか?

プロセスメモリへのすべての変更を記録するgdbの逆デバッグに興味があるかもしれません。これがチュートリアルです(google cache)。

生の録音ツールでプレイしたい場合は、RobertO'CallahanChronicle / Chronomancerの 作品もあります。

于 2013-03-19T11:56:02.823 に答える