程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了了解Linux / proc / id / maps大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决了解Linux / proc / id / maps?

开发过程中遇到了解Linux / proc / id / maps的问题如何解决?下面主要结合日常开发的经验,给出你关于了解Linux / proc / id / maps的解决方法建议,希望对你解决了解Linux / proc / id / maps有所启发或帮助;

中的每一行都/proc/$PID/maps描述了进程或线程中连续虚拟内存的区域。每行都有以下字段:

address           perms offset  dev   inode   pathname
08048000-08056000 r-xp 00000000 03:0c 64593   /usr/sbin/gpm
  • -这是进程地址空间中区域的开始和结束地址
  • -描述如何访问区域中的页面。有四种不同的权限:读取,写入,执行和共享。如果禁用了读/写/执行,-将显示a而不是r/ w/ x。如果区域不 共享的 ,它是 私人 ,所以p会出现,而不是一个s。如果该进程尝试以不允许的方式访问内存,则会产生分段错误。可以使用@H_488_3@mprotect系统调用来更改权限。
  • 如果是从文件映射区域(使用@H_488_3@mmap),则这是映射开始的文件中的偏移量。如果内存不是从文件映射的,则仅为0。
  • -如果该区域是从文件映射的,则这是文件所在的主要和次要设备编号(十六进制)。
  • -如果该区域是从文件映射的,则为文件号。
  • 如果区域是从文件映射的,则这是文件的名称。对于匿名映射区域,此字段为空白。此外还有一些与名特殊地区,如[heap][stack][vdso][vdso]代表虚拟动态共享对象。系统调用使用它来切换到内核模式。 您可能会注意到很多匿名区域。这些通常由@H_488_3@mmap但不附加到任何文件创建。它们用于许多其他事情,例如共享内存或未在堆上分配的缓冲区。例如,我认为pthread库使用匿名映射的区域作为新线程的堆栈。

解决方法

我试图了解嵌入式Linux应用程序的内存使用情况。该/proc/pid/maps实用程序/文件似乎是查看详细信息的好资源。不幸的是,我不理解所有的列和条目。

匿名索引节点0条目是什么意思?这些似乎是一些较大的内存段。

大佬总结

以上是大佬教程为你收集整理的了解Linux / proc / id / maps全部内容,希望文章能够帮你解决了解Linux / proc / id / maps所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。