我使用命令dumpheap -n <PID> <file>
創建了本機堆轉儲文件。該文件是可讀的格式,但包含的信息太難理解。我如何分析這個文件並從中獲得有用的信息?Android:如何分析本地堆轉儲?
功能地址是在函數名稱的地方提供的。該映射位於文件的底部。是否有任何工具可以映射它們,併爲函數/庫名稱而不是地址提供有意義的輸出(加載庫/函數的符號)。如果沒有一個,那麼ddms如何做到這一點?還有如何加載符號來顯示函數名稱?
有什麼方法可以比較兩個或多個本機堆轉儲?
轉儲堆文件,我得到這個樣子的
Android原生堆轉儲V1.0
總內存:13863984個 分配記錄:3108
Z 1 SZ 8388608號碼1勝40afcd1a 40afbc0e 40119d30 40795210 407a9bae 407941a0 4076c264 40770b6c 407a47f4 407a481e 40786d44 407a6da6 407a800e 407a58c4 407a820a 40798ac8 40115bb4 4011530c
Z 1 SZ 1516906 NUM 1 BT 40afcd1a 40afbc0e 40119d 30 400658fe 402563d8 5a400b10 5d6c3ed2 5d6c3efc 5d6c3f34 5d69d556 5d6a9de0 40794664 407aafa0 4076c264 40770b6c 407a47f4 407a481e 407af4a8 407aff8c 407678b0 40770b6c 407a4aba 407ac010 4076c264 40770b6c 407a47f4 4078e676 401dd98e 401de472 4005ddd2 40119ed4
Z 1 SZ 262144 NUM 1 BT 40afcd1a 40afbc0e 40119d30 400658fe 40a14416 40a144e0 40a154a4 40a1570e 40a1d8cc 40a20d42 40a1a9e4 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 401f0c90 40762e34 40792086 4076c264 40770b6c 407a4aba 407ac010 4076c264 40770b6c 407a47f4 4078e676 401dd98e 401de472 4005ddd2
Z 1 SZ 262144 NUM 1 BT 40afcd1a 40afbc0e 40119d30 400658fe 40a14416 40a144e0 40a154a4 40a1570e 40a1d8cc 40a20d42 40a1a9e4 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1a A26 40a1aa26 401f0c90 40762e34 40792086 4076c264 40770b6c 407a4aba 407ac010 4076c264 40770b6c 407a47f4 4078e676 401dd98e
Z 1 SZ 65536 NUM 1 BT 40afcd1a 40afbc0e 40119d30 400658fe 40a14400 40a15714 40a1d8cc 40a20d42 40a1a9e4 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 401f0c90 40762e34 40792086 4076c264 40770b6c 407a4aba 407ac010 4076c264 40770b6c 407a47f4 4078e676 401dd98e 401de472 4005ddd2 40119ed4
Z 1 SZ 65536 NUM 1 BT 40afcd1a 40afbc0e 40119d30 400658fe 40a14400 40a15714 40a1d8cc 40a20d42 40a1a9e4 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 40a1aa26 401f0c90 40762e34 40792086 4076c264 40770b6c 407a4aba 407ac010 4076c264 40770b6c 407a47f4 4078e676 401dd98e 401de472 4005ddd2
這些數字表明什麼?
我無法在此處單獨使用行號解碼函數名稱。我應該怎麼做?從DDMS UI我能夠得到它,但是當我從命令行嘗試函數名稱不顯示。我如何解讀底部的地圖? –
你能舉一個你正在嘗試的例子嗎?(即確切的命令行)? – fadden
我使用了這個命令'addr2line -C -f -e /symbols/libexample.so 000c3ed2',其中地址是5d6c3ed2,並且在將高12位清零時,我得到了000c3ed2。我嘗試了DDMS UI和命令行。我點擊了原生堆標籤中的導出數據。在那個allocations.txt文件中,我得到的映射爲5d6c3ed2 /data/data/libexample.so --- Animate():15 ---。但是當我嘗試上面的命令時,我得到了00:?請幫幫我。!!! –