已分配给定物理地址的进程信息?

时间:2013-07-01 12:06:50

标签: memory-management linux-kernel

我正在调试内核内存损坏问题。从我拥有的资源,我能够找到一个地址(物理)03a08000(每次都变化),虚拟 - c3a08000被覆盖。

现在我想知道已分配此内存的进程。我怎么能这样做?

简而言之,我的问题是,如何找到已分配给定物理地址的进程的名称(进程ID或任何信息)?

如果我不清楚我的问题,请告诉我。

编辑:忘记提及我有完整的内存转储(完成2 gb ram)和我一起

2 个答案:

答案 0 :(得分:2)

通过PageMap tools我们可以映射内存中的所有进程.PageMap工具包含两个独立的命令行实用程序:

page-collect.c - 收集内存“快照”;在目标平台上运行。
  page-analyze.cpp - 分析内存“快照”并生成报告;在任何平台上运行。

EDIT ------

要调试崩溃转储,可以使用gdb和其他tools来完成。要快速分析崩溃dumpother。关于崩溃的完整教程dump.

RE-EDIT ................................... 我对你的问题不太确定,但是当我们分析crash dump时;它从

开始
linux:/var/crash/20111222 # crash System.map-2.6.32.49-0.3-default \
vmlinux-2.6.32.49-0.3-default.gz vmcore

然后我们可以按ps列出所有流程,其中还会显示PID& Physical Address两者。

答案 1 :(得分:0)

在崩溃工具中有一个名为showmap的命令。这将告诉确切的pid以及该进程使用的所有内存。 这是我正在寻找的确切信息。

Kmem显示有关相关流程详情的更好统计数据。

crash > kmem <address>