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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用cat /proc/进程id/maps 查看进程内存映射 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

proc/<PID>/maps
查看進(jìn)程的虛擬地址空間是如何使用的。
該文件有6列,分別為:
地址:庫(kù)在進(jìn)程里地址范圍
權(quán)限:虛擬內(nèi)存的權(quán)限,r=讀,w=寫(xiě),x=,s=共享,p=私有;
偏移量:庫(kù)在進(jìn)程里地址范圍
設(shè)備:映像文件的主設(shè)備號(hào)和次設(shè)備號(hào);
節(jié)點(diǎn):映像文件的節(jié)點(diǎn)號(hào);
路徑: 映像文件的路徑
每項(xiàng)都與一個(gè)vm_area_struct結(jié)構(gòu)成員對(duì)應(yīng)

C語(yǔ)言代碼

#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文件

執(zhí)行該文件

#./a.out

查看執(zhí)行該文件對(duì)應(yīng)的進(jìn)程

#ps au

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

#cat /proc/2200/maps

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

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


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

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


查看根進(jìn)程

#cat /proc/1/statm

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。