无码av毛片一级不卡|一本综合九九国产二区|AⅤ高清无码免费看大片|国产真实高潮太爽了十八|国内精品久久无码人妻影院|亚洲AV影院一区二区三区|国产精品久久久久久中文麻豆|97精品一区二区视频在线观看
問答
產(chǎn)品
|
公司
|
配件目錄
|
EPC底盤號查詢
下載手機汽配人
汽配人首頁 >
問答首頁
centos中出現(xiàn)sigsegv和sigbus錯誤,怎么辦
問
提問者:網(wǎng)友
|
2017-12-20
最佳回答
SIGBUS和SIGSEGV也許是我們在平時遇到的次數(shù)最多的兩個內(nèi)存錯誤信號。內(nèi)存問題一直是最令我們頭疼的事情,弄清楚兩個信號的發(fā)生緣由對我們很好的理解程序的運行是大有裨益的。我們來看兩段程序://testsigsegv.cint main() { char *pc = (char*)0x00001111; *pc = 17;}//testsigbus.cint main() { int *pi = (int*)0x00001111; *pi = 17;}上面的代碼那么的相似,我們也同樣用gcc編譯(加上-g選項,便于gdb調(diào)試;平臺Solaris Sparc),執(zhí)行結(jié)果也都是dump core。但通過GDB對core進行觀察,你會發(fā)現(xiàn)細微的不同。第一個例子出的core原因是:Program terminated with signal 11, Segmentation fault. 而第二個例子的core則提示:Program terminated with signal 10, Bus error. 兩者有什么不同呢?這兩段代碼的共同點都是將一個非法地址賦值給指針變量,然后試圖寫數(shù)據(jù)到這個地址。如果要說清楚這個問題,我們就要結(jié)合匯編碼和一些計算機的體系結(jié)構(gòu)的知識來共同分析了。先來看testsigsegv.c的匯編碼:... ...main: !#PROLOGUE# 0 save %sp, -120, %sp !#PROLOGUE# 1 sethi %hi(4096), %i0 or %i0, 273, %i0 st %i0, [%fp-20] ld [%fp-20], %i1 mov 17, %i0 stb %i0, [%i1] nop ret restore... ...我們關(guān)注的是這句:stb %i0, [%i1]從計算機底層的執(zhí)行角度來說,過程是如何的呢?%i0寄存器里存儲的是立即數(shù)17,我們要將之存儲到寄存器%i1的值指向的內(nèi)存地址。這一過程對于CPU來說其指揮執(zhí)行的正常過程是:將寄存器%i0中的值送上數(shù)據(jù)總線,將寄存器%i1的值送到地址總線,然后使能控制總線上的寫信號完成這一向內(nèi)存寫1 byte數(shù)據(jù)的過程。我們再看testsigbus.c的匯編碼:... ...main: !#PROLOGUE# 0 save %sp, -120, %sp !#PROLOGUE# 1 sethi %hi(4096), %i0 or %i0, 273, %i0 st %i0, [%fp-20] ld [%fp-20], %i1 mov 17, %i0 st %i0, [%i1] nop ret restore... ...同樣最后一句:st %i0, [%i1],CPU執(zhí)行的過程與testsigsegv.c中的一致(只是要存儲數(shù)據(jù)長度是4字節(jié)),那為什么產(chǎn)生錯誤的原因不同呢?一個是SIGSEGV,而另一個是SIGBUS。這里涉及到的就是對內(nèi)存地址的校驗的問題了,包括對內(nèi)存地址是否對齊的校驗以及該內(nèi)存地址是否合法的校驗。我們假設(shè)如果首先進行的內(nèi)存地址是否合法的校驗(是否歸屬于用戶進程的地址空間),那么我們回顧一下,這兩個程序中的地址0x00001111顯然都不合法,按照這種流程,兩個程序都應(yīng)該是SIGSEGV導致的core才對,但是事實并非如此。那難道是先校驗內(nèi)存地址的對齊?我們再看這種思路是否合理?testsigsegv.c中,0x00001111這個地址值被賦給了char *pc;也就是告訴CPU通過這個地址我們要存取一個字節(jié)的值,對于一個字節(jié)長度的數(shù)據(jù),無所謂對齊,所以該地址通過對齊校驗;并被放到地址總線上了。而在testsigbus.c里,0x00001111這個地址值被賦給了int *pi;也就是告訴CPU通過這個地址我們要存取一個起碼4個字節(jié)的值,那么對于長度4個字節(jié)的對象,其存放地址起碼要被4整除才可以,而0x00001111這個值顯然不能滿足要求,也就不能通過內(nèi)存對齊的校驗。也就是說SIGBUS這個信號在地址被放到地址總線之后被檢查出來的不符合對齊的錯誤;而SIGSEGV則是在地址已經(jīng)放到地址總線上后,由后續(xù)流程中的某個設(shè)施檢查出來的內(nèi)存違法訪問錯誤。一般我們平時遇到SIGBUS時總是因為地址未對齊導致的,而SIGSEGV則是由于內(nèi)存地址不合法造成的。1) SIGBUS(Bus error)意味著指針所對應(yīng)的地址是有效地址,但總線不能正常使用該指針。通常是未對齊的數(shù)據(jù)訪問所致。2) SIGSEGV(Segment fault)意味著指針所對應(yīng)的地址是無效地址,沒有物理內(nèi)存對應(yīng)該地址。 Linux的mmap(2)手冊頁使用映射可能涉及到如下信號SIGSEGV 試圖對只讀映射區(qū)域進行寫操作SIGBUS 試圖訪問一塊無文件內(nèi)容對應(yīng)的內(nèi)存區(qū)域,比如超過文件尾的內(nèi)存區(qū)域,或者以前有文件內(nèi)容對應(yīng),現(xiàn)在為另一進程截斷過的內(nèi)存區(qū)域。調(diào)試方法:gcc -g 編譯 ulimit -c 20000 之后運行程序,等core dump 最后gdb -c core
回答者:網(wǎng)友
產(chǎn)品精選
我來回答
看不清?換一個
提交答案
相關(guān)已解答問題
車載輪胎充氣泵怎么用
汽車安全帶怎么清洗
奧迪A4 Allroad quattro和A5 Sportback是混型車嗎?
A4 allroad 二代EA888發(fā)動機燒機油嗎
什么牌子的越野車好?
壓力傳感器安裝在什么位置?
重型半掛牽引車疲勞駕駛扣幾分
長城哈弗h6coupe車身自重
1.8噸貨車年檢都需要什么 需要多少錢
2橋的集裝箱半掛車多少錢?
在移動端查看:
centos中出現(xiàn)sigsegv和sigbus錯誤,怎么辦
搜索問答
還沒有汽配人賬號?
立即注冊
我要提問
精彩推薦
1
鋼板彈簧懸架和霍奇基斯懸架哪個好
2
奧迪A6L 換防凍液之后怎么排空氣?
3
奧迪Q7車身車架號在哪?
4
奧迪a6電瓶正負極在哪
5
車輛類型(車輛類型K21、K31、K32、H32各代表什么意思?)
6
東風天錦,凸輪軸與曲軸轉(zhuǎn)速傳感器不匹配
7
奧迪245/40/R18是什么意思
8
東風天龍駕駛座椅氣囊怎么沒反應(yīng)
9
東風天龍汽車儀表未收到EECU報文是什么原因呢
10
東風天錦儀表中顯示STOP在閃爍是代表什么意思!只要閃爍了車儀表故障碼就顯示不出來,但是車就是打不著火!
周邊商家推薦
周邊產(chǎn)品推薦
相關(guān)問答
機戰(zhàn)中防護罩的原理
奧迪A8W12,寶馬760li,奔馳S600,哪個綜合起來最好
歐洲之星客車和青年客車哪個好點
雪佛蘭克魯斯汽車發(fā)動機有敲缸聲音怎么辦
物流學生去超市好啊還是去汽車配件流水線好啊
哈力愛俊達的150CC-250CC的仿跑摩托車怎么樣?
群達1000合一 萬能空調(diào)遙控器 壞了,急求!!
你好 請問你下 按結(jié) 要有些什么明細的東西
拜求大神解答皇冠轉(zhuǎn)速表正常但速度表不轉(zhuǎn)怎么回事
產(chǎn)品精選
倍耐力輪胎
河北半掛車
撥動開關(guān)
高壓清洗管道
開封隨車吊
南京軸承
VG1560130064
DZ1642690021
電纜線
雨刷器電機
優(yōu)勢廠家
無油軸承廠家
法士特取力器廠家
寶馬空氣流量計廠家
大運六角頭螺栓廠家
佩特來開關(guān)廠家
PI5130SMX6廠家
SZ955001028廠家
奇瑞t11廠家
汽油泵廠家
指示燈廠家
圖片大全
風神曲軸圖片
浙江發(fā)電機圖片
東風新車圖片
康明斯拆裝器圖片
5001040圖片
81.96121.0056圖片
集濾器圖片
剪刀圖片
螺栓圖片
示廓燈圖片
推薦主題
發(fā)電機組
解放車橋
三菱8DC
濰柴JX0818
蓄電池
河北空氣濾芯
HFF24102038CK1
C3782374
Bravo
汽車噴油器
本頁是網(wǎng)友提供的關(guān)于“centos中出現(xiàn)sigsegv和sigbus錯誤,怎么辦”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準確性。
協(xié)議規(guī)則
服務(wù)協(xié)議
交易規(guī)則
注冊新用戶
幫助中心
網(wǎng)站服務(wù)
汽配旺鋪
網(wǎng)價查詢
商用車EPC查詢
營銷寶
特色市場
商用車市場
乘用車市場
東風市場
重汽市場
陜汽市場
一汽市場
北汽市場
江淮市場
專用汽車
地方分站
江蘇分站
廣東分站
山東分站
吉林分站
專用車分站
河南分站
十堰產(chǎn)業(yè)帶
云南分站
陜西市場
移動端
手機登錄:m.qipeiren.com
iPhone
Android
關(guān)于我們
|
友情鏈接
|
汽車配件批發(fā)
|
汽車配件圖片
|
汽車配件大全
|
汽配問答
|
汽配廠家
|
汽配品牌
|
汽配主題
|
汽配城
|
鄂ICP備14009261號
經(jīng)營許可證編號:鄂B2-20140114
服務(wù)熱線:0719-8311727
Copyright © 2005-2025 十堰億脈科技有限公司 版權(quán)所有
鄂公網(wǎng)安備 42030202000345號