kernel memory leak detector
kernel debugging
memory leak debugging
compile kernel with debug info
通過make menuconfig 進入配置選項介面進入kernel hacking --> trace中可以檢視到
android init.***.rc 檔案中: mount debugfs debugfs /sys/kernel/debug
純linux系統中/etc/fstab : debug /sys/kernel/debug debugfs defaults 0 0
cat /sys/kernel/debug/memleak 執行多次確保獲得正確結果
kmemleak.c 檔案中print_unreferenced 函式就會列印出洩漏的位址
seq_printf(seq, "
unreferenced object 0x%08lx (size %zu):\n", object->pointer, object->size); // 例如位址為0x11223344
***xx-linux-addr2line -e vmlinux 11223344 // 即可得到問題出現的檔案及行數
Linux核心記憶體
核心空間占用4g虛擬記憶體的後1g 明確 不論在核心空間還是使用者空間,看到的位址都是虛擬位址,只是虛擬位址空間不一樣 但是cpu最終訪問的位址是虛擬位址對應的實體地址 虛擬位址轉換成對應的實體地址需要mmu 將來mmu利用頁表進行位址轉換 引申 uclinux支援不帶mmu的處理器 問 使用者空間...
linux核心記憶體分配
核心中的記憶體分配通常通過kmalloc kfree來進行,但是也有其它的方式來獲取記憶體,所有這些方式共同提供了核心中分配 釋放記憶體的介面。類似於標準c中的malloc free,kmalloc kfree是核心中的用於常規記憶體分配的介面。kmalloc kfree是工作在slab分配器的基礎...
linux核心記憶體管理
整個linux虛擬記憶體發布如下 3g以上是核心位址,0 3g是程序位址空間。在x86結構中,核心位址分為三種,這三種型別的區域如下 zone dma 記憶體開始的16mb zone normal 16mb 896mb zone highmem 896mb 結束 程序位址空間的3g,通過mmu,隨機...