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