2

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

现在我想知道分配了这个内存的进程。我怎样才能做到这一点?

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

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

编辑:忘了提到我有完整的内存转储(完整的 2 GB 内存)

4

2 回答 2

2

通过PageMap 工具,我们可以映射内存中的所有进程。 PageMap 工具由两个单独的命令行实用程序组成:

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

编辑 - - -

要调试故障转储,可以使用gdb和其他工具来完成。分析为快速概览故障转储其他. 故障转储的完整教程。

重新编辑.......................我不太确定你的问题,但是当我们分析故障转储;它开始于

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

于 2013-07-04T09:20:51.073 回答
0

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

Kmem显示有关相关过程细节的更好统计数据。

crash > kmem <address>
于 2013-08-22T08:49:26.893 回答