Linux dmesg命令用於顯示開機信息。
kernel會將開機信息存儲在ring buffer中。您若是開機時來不及查看信息,可利用dmesg來查看。開機信息亦保存在/var/log目錄中,名稱為dmesg的文件里。
語法
dmesg [-cn][-s <緩沖區大小>]
參數說明:
- -c 顯示信息后,清除ring buffer中的內容。
- -s<緩沖區大小> 預設置為8196,剛好等於ring buffer的大小。
- -n 設置記錄信息的層級。
dmesg + addr2line 查看core dump之后出錯堆棧的地址:
首先先產生一個錯誤,代碼如下:
1 #include <stdio.h> 2 3 int main(void) 4 { 5 char *str = NULL; 6 7 *str = 0; 8 9 return 0; 10 }
編譯代碼並執行:
gcc -g main.c // 編譯的時候要加-g,添加調試信息 ./a.out
出現以下錯誤:
Segmentation fault
使用dmesg查看錯誤堆棧地址:
# dmesg | grep a.out [87995.723791] a.out[9405]: segfault at 0 ip 00000000004004dd sp 00007fff994faa90 error 6 in a.out[400000+1000]
使用addr2line查找問題出處:
# addr2line -e a.out 00000000004004dd // -e 指定執行程序文件 /root/misc/main.c:7 // 說明問題出自main.c文件中的第7行