直接从任何内存地址读取?

我使用Linux操作系统在硬件上进行一些debugging。

现在没有办法让我知道它是否有效,除非我能检查我要求它写入的分配的内存。

有什么方法可以检查在同一个OS中运行的外部程序中的块或RAM中的内容?

如果我可以在C编写一个小程序来做到这一点,我将不能去分配指针自定义地址?

谢谢

我认为做你所要求的最好的方法是使用调试器。 而且,除非您在特权空间(即内核)中执行您的代码,并且从CPU的角度来看,您不能读取另一个程序的内存。 这是因为每个程序都在自己的虚拟内存空间中运行(出于安全考虑),甚至内核运行在虚拟内存空间中,但是它有权将任何物理内存块映射到当前正在运行的虚拟内存空间中。 无论如何,我不会更深入地解释一下现代操作系统如何用硬件来管理内存,那将是很长的。

你应该看看使用调试器。 一旦你的调试器的环境准备好了,你应该在内存块分配之后休息一下,这样调试器将会停止程序,所以你可以根据需要检查新分配的内存块。 根据您是否使用IDE,使用调试器会非常容易;)

/dev/mem可以使用。 这是一个设备文件,是物理内存的映像(包括非RAM内存)。 它通常用于读/写外围设备的内存。 通过mmap() ,你可以访问物理内存。

看到这个linux文档项目页面

memedit是一个方便的实用程序来显示和更改内存内容用于测试目的。 主要目的是显示SoC硬件寄存器,但可用于显示RAM。 它基于mmap()机制。 编写自定义应用程序可能是一个好的起点。