Linux核心Crash分析

2021-07-23 21:23:12 字數 771 閱讀 3818

每乙個程序的生命週期內,其生命週期的範圍為幾毫秒到幾個月。一般都是和核心有互動,例如使用者空間程式使用系統呼叫進入核心空間。這時使用的不再是使用者空間的棧空間,使用對應的核心棧空間。對每乙個程序來說,linux核心都會把兩個不同的資料結構緊湊的存放在乙個單獨為程序分配的儲存空間中:乙個是核心態的程序堆疊,另乙個是緊挨程序描述符的資料結構thread_info,叫執行緒描述符。核心的堆疊大小一般為8kb,也就是8192個位元組,占用兩個頁。在linux-2.6.32核心中thread_info.h檔案中有對核心堆疊的定義:

#define thread_size               8192

在linux核心中使用下面的聯合結構體表示乙個程序的執行緒描述符和核心棧,在核心中檔案include/linux/sched.h。

union thread_union else if (tsk != current) else else if (verify_stack(fp)) else if (fp < (unsigned long)end_of_stack(tsk))

printk("frame pointer underflow");

printk("\n");

if (ok)

c_backtrace(fp, mode);

(6)dump_instr

根據pc指標和指令mode, 列印出當前執行的指令碼

code: 0a000008 e5944000 e2545000 0a000005 (e4153010)

核心中函式的呼叫關係

Linux核心Crash分析 重要

linux核心crash分析 每乙個程序的生命週期內,其生命週期的範圍為幾毫秒到幾個月。一般都是和核心有互動,例如使用者空間程式使用系統呼叫進入核心空間。這時使用的不再是使用者空間的棧空間,使用對應的核心棧空間。對每乙個程序來說,linux核心都會把兩個不同的資料結構緊湊的存放在乙個單獨為程序分配的...

crash除錯核心模組

wifi 模組出現panic時,怎麼根據fulldump去分析wifi問題,以及怎麼除錯wlan的ko檔案?這裡介紹linux下的crash工具來分析fulldump,當然也可以用trace32,gdb等其他工具.1.安裝crash工具 編譯和安裝 make target arm64 make in...

Crash日誌分析

從crash檔案出發解決bug的一般步驟,分三步 a,獲取裝置上的崩潰日誌。b,分析崩潰日誌,找到報錯位置 定位到函式和 行數 c,開啟 改bug。1,獲取裝置日誌 2,解析日誌 2.1 在命令列輸入下面的命令獲取symbolicatecrash二進位制檔案,獲取到路徑後,copy乙份出來 2.3 ...