日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用cat /proc/进程id/maps 查看进程内存映射

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用cat /proc/进程id/maps 查看进程内存映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

proc/<PID>/maps
查看進程的虛擬地址空間是如何使用的。
該文件有6列,分別為:
地址:庫在進程里地址范圍
權限:虛擬內存的權限,r=讀,w=寫,x=,s=共享,p=私有;
偏移量:庫在進程里地址范圍
設備:映像文件的主設備號和次設備號;
節點:映像文件的節點號;
路徑: 映像文件的路徑
每項都與一個vm_area_struct結構成員對應

C語言代碼

#include <stdio.h>  
#include <stdlib.h>         
int q[200];         
int main(void)  {    
int i, n, *p;    
p = (int *) malloc(sizeof(int));    
scanf("%d", &n);    
for (i=0; i<200; i++)      
q[i]=i;               
printf("%x %x %x %x %x \n", main, q, p, &i, scanf);             
return 0;         
}

?

編譯成a.out文件

執行該文件

#./a.out

查看執行該文件對應的進程

#ps au

可以看到2200就是我們需要的pid

#cat /proc/2200/maps

參數 解釋
address: 0085d000-00872000 虛擬內存區域的起始和終止地址文件所占的地址空間
perms:rw-p 權限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
offset: 00000000 虛擬內存區域在被映射文件中的偏移量
dev: 03:08 文件的主設備號和次設備號
inode: 設備的節點號,0表示沒有節點與內存相對應
name: /lib/ld-2.2.12.so 被映射文件的文件名

各共享庫的代碼段,存放著二進制可執行的機器指令,是由kernel把該庫ELF文件的代碼段map到虛存空間;
各共享庫的數據段,存放著程序執行所需的全局變量,是由kernel把ELF文件的數據段map到虛存空間;
用戶代碼段,存放著二進制形式的可執行的機器指令,是由kernel把ELF文件的代碼段map到虛存空間;
用戶數據段之上是代碼段,存放著程序執行所需的全局變量,是由kernel把ELF文件的數據段map到虛存空間;
用戶數據段之下是堆(heap),當且僅當malloc調用時存在,是由kernel把匿名內存map到虛存空間,堆則在程序中沒有調用malloc的情況下不存在;
用戶數據段之下是棧(stack),作為進程的臨時數據區,是由kernel把匿名內存map到虛存空間,棧空間的增長方向是從高地址到低地址。


#cat /proc/2200/statm
499 96 83 1 0 62 0

很簡單地返回7組數字,每一個的單位都是一頁 (常見的是4KB)
分別是
size:任務虛擬地址空間大小
Resident:正在使用的物理內存大小
Shared:共享頁數
Trs:程序所擁有的可執行虛擬內存大小
Lrs:被映像倒任務的虛擬內存空間的庫的大小
Drs:程序數據段和用戶態的棧的大小
dt:臟頁數量


查看根進程

#cat /proc/1/statm

總結

以上是生活随笔為你收集整理的使用cat /proc/进程id/maps 查看进程内存映射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。