dmesg

使用命令Dmesg,終端顯示如:

程序名[程序pid]segfault at0000000000000000 rip 0000000008048f03 rsp 00000000ff867570 error 4

 

原因:

這種信息一般都是由內存訪問越界造成的,不管是用戶態程序還是內核態程序訪問越界都會出core,並在系統日誌裏面輸出一條這樣的信息。這條信息的前面分別是訪問越界的程序名,進程ID號,訪問越界的地址以及當時進程堆棧地址等信息,比較有用的信息是最後的errornumber. 在上面的信息中,error number是4 ,下面詳細介紹一下error number的信息:

在上面的例子中,error number是4, 轉成二進制就是100,即bit2=1, bit1=0, bit0=0, 按照上面的解釋,我們可以得出這條信息是由於用戶態程序讀操作訪問越界造成的。

error number是由三個字位組成的,從高到底分別爲bit2bit1和bit0,所以它的取值範圍是0~7.

 

bit2: 值爲1表示是用戶態程序內存訪問越界,值爲0表示是內核態程序內存訪問越界

bit1: 值爲1表示是寫操作導致內存訪問越界,值爲0表示是讀操作導致內存訪問越界

bit0: 值爲1表示沒有足夠的權限訪問非法地址的內容,值爲0表示訪問的非法地址根本沒有對應的頁面,也就是無效地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章