kernel記憶體洩漏的除錯

2021-09-30 11:16:43 字數 751 閱讀 5226

\boot\kernel\lib\kconfig.debug 

修改config debug_kmemleak_early_log_size中default 400為4000,因為400會洩漏,kernel呼叫log_early剛好401次,剛剛把400次耗光,導致log_early中滿足crt_early_log >= array_size(early_log)進而kmemleak_disable()。

config_debug_kmemleak=y

//改為y

#config_debug_kmemleak_default_off //注釋掉

如果要顯示所有可能記憶體洩漏的細節,需要掛載debugfs(mount debugfs):

# mount -t debugfs nodev /sys/kernel/debug

# cat /sys/kernel/debug/kmemleak 

如果要立即觸發記憶體掃瞄,請使用以下命令:

# echo scan > /sys/kernel/debug/kmemleak 

如果想清除當前記憶體洩漏列表,請使用以下命令:

# echo clear > /sys/kernel/debug/kmemleak 

kmemleak在啟動時可以被disable(通過傳遞"kmemleak=0ff"給kernel command line)

如果想檢視ion leak檔案描述符,請使用以下命令:

cat /d/ion/check_leaked_fds

Visual Studio記憶體洩漏除錯

在可能洩漏的檔案頭部加入下面幾行 保證malloc和new的洩漏都可以檢測到 define crtdbg map alloc include ifdef debug 過載new運算子 define new new normal block,file line endif 然後在程式中加入下面 程式執...

Linux mtrace除錯記憶體洩漏

本文只介紹乙個實用的linux小命令 mtrace memory trace 它能夠用來協助定位記憶體洩露 linux下測試 4 trace.c include includeint main 編譯 gcc 4 trace.c o 4 trace g ddebug 因為我 中沒有debug巨集控制,...

C 記憶體洩漏的除錯

一 在程式 中加入 標頭檔案和巨集定義 define crtdbg map alloc include define new new normal block,file line 注意 include 語句的順序。如果更改此順序,所使用的函式可能無法正確工作。在析構函式最後一行呼叫 crtdumpm...