pmap
lddstace
要熟悉的幾個除錯命令!
兩個檢視記憶體的檔案
$cat/proc/<pid>/stat|awk''$cat/proc/<pid>/status|grep-i vmsize
其中,關於記憶體的是 vsz 和 rss 這兩個概念
man ps 看看它們的含義:
觀察到系統中的指定程序的位址空間分布情況顯示乙個目標檔案或者鏈結庫檔案中的目標檔案的各個段的大小。該檔案從/proc//maps中獲得資料。
命令格式:
pmap -x/-d pid
範例:[root@localhost security]# pmap -d 4993
4993: -bash
08047000 596 r-x-- 0000000000000000 003:00006 bash bash的**段
080dc000 28 rwx-- 0000000000094000 003:00006 bash bash的資料段
080e3000 280 rwx-- 00000000080e3000 000:00000 [ anon ] bash的堆
4d575000 84 r-x-- 0000000000000000 003:00006 ld-2.3.4.so 共享庫的**段
4d58a000 4 r-x-- 0000000000015000 003:00006 ld-2.3.4.so 共享庫的資料段
4d58b000 4 rwx-- 0000000000016000 003:00006 ld-2.3.4.so 共享庫的堆
4d58e000 1164 r-x-- 0000000000000000 003:00006 libc-2.3.4.so
4d6b1000 4 r-x-- 0000000000123000 003:00006 libc-2.3.4.so
4d6b2000 12 rwx-- 0000000000124000 003:00006 libc-2.3.4.so
4d6b5000 8 rwx-- 000000004d6b5000 000:00000 [ anon ] 匿名物理記憶體,
4d6de000 8 r-x-- 0000000000000000 003:00006 libdl-2.3.4.so
4d6e0000 8 rwx-- 0000000000001000 003:00006 libdl-2.3.4.so
4d807000 12 r-x-- 0000000000000000 003:00006 libtermcap.so.2.0.8
4d80a000 4 rwx-- 0000000000002000 003:00006 libtermcap.so.2.0.8
b7bc2000 176 r-x-- 0000000000000000 003:00006 gb18030.so
b7bee000 8 rwx-- 000000000002b000 003:00006 gb18030.so
b7bf0000 24 r-xs- 0000000000000000 003:00006 gconv-modules.cache
b7bf6000 1060 r-x-- 0000000002197000 003:00006 locale-archive
b7cff000 2048 r-x-- 0000000000000000 003:00006 locale-archive
b7eff000 36 r-x-- 0000000000000000 003:00006 libnss_files-2.3.4.so
b7f08000 8 rwx-- 0000000000008000 003:00006 libnss_files-2.3.4.so
b7f0a000 8 rwx-- 00000000b7f0a000 000:00000 [ anon ]
b7f20000 8 rwx-- 00000000b7f20000 000:00000 [ anon ]
bff0d000 84 rw--- 00000000bff0d000 000:00000 [ stack ]
ffffe000 4 ----- 0000000000000000 000:00000 [ anon ]
每列的含義如下:
引數 解釋
address:00378000-0038d000 程序所佔的位址空間
kbytes 該虛擬段的大小
rss 裝置號(主裝置:次裝置)
anon 裝置的節點號,0表示沒有節點與記憶體相對應
mode 許可權:r=read, w=write, x=execute, s=shared, p=private(copy on write)
迴圈顯示程序
3066
的裝置格式的最後
1行,間隔
2秒,
[root@c44 ~]# while true; do pmap -d 3066 | tail -1; sleep 2; done
記憶體洩露指令碼:
memleak.sh:
#!/bin/sh
i=1
until [ ! "$i" -le 10 ]
do
val=$(pidof converter)
if [ -z "$val" ]; then
ret=$(pmap -d $val | tail -1)
fimytime=$(date "+%y-%m-%d %h:%m:%s")
filetime=$(date "+%y-%m-%d")
echo "[$mytime] [$ret]" >> memleak_$filetime.leak
sleep 5
done
linux應用程式記憶體檢測 pmap
命令格式 pmap root localhost security pmap d 4993 4993 bash 08047000 596 r x 0000000000000000 003 00006 bash bash的 段 080dc000 28 rwx 0000000000094000 003 ...
linux下的pmap命令
linux的pmap命令可以很方便地看到某個程序所用的記憶體情況,說明如下 1 pmap d 程序號 出現的幾列的含義 每列的含義如下 引數 解釋 kbytes 該虛擬段的大小 rss 裝置號 主裝置 次裝置 anon 裝置的節點號,0表示沒有節點與記憶體相對應 mode 許可權 r read,w ...
linux效能測試 pmap命令
參考文獻 名稱 pmap report memory map of a process 檢視程序的記憶體映像資訊 用法pmap options pids pmap v 選項含義 x extended show the extended format.顯示擴充套件格式 d device show th...