❶ 為什麼程序會出現Bus Error
最近在論壇上看到一個程序員在詢問Bus Error的問題。他有一個非常簡單的測試程序,將一個short數組中第二個成員變數的地址附給一個int型的指針,接著給該指針賦值,大致代碼如下:
short array[10];
int * p = (int *) &array[1];*p = 1;
運行的平台是Solaris for SPARC,使用的編譯器是GCC,程序執行到指針賦值的時候的出現Bus Error出錯信息,程序coremp。他覺得非常奇怪,代碼在X86平台運行的很好。其實這個問題完全是由於CPU硬體不同所造成的。
Bus Error通常都是因為非對齊訪問造成的。CPU在設計上為了性能上的考慮,要求待訪問,操作的數據地址都要對齊。如果發現沒有對齊的訪問,就會向當前進程發出SIGBUS信號,使程序崩潰。RISC包括SPARC都是這種類型的晶元。而X86架構就沒有這種對齊要求。所以這段代碼在Solaris 10 for X86下面沒有問題,當然這是有性能的代價。Bus Error也有可能是因為機器物理問題或者訪問無效物理地址,但這種情況非常少見。
上面的代碼正是這種非對齊訪問造成的Bus Error。short是兩個位元組,其地址偏移量必是2的倍數。而對於int指針來說,需要偏移量地址是4的倍數的數據,所以直接用int指針來操作地址,就很有可能導致系統發出SIGBUS信號,程序崩潰。
這段程序如果用Sun Studio編譯器的話,運行就沒有問題。這是因為Sun Studio默認對32位編譯使用的參數是-xmemalign=8i,其中i選項設置明確不會產生這種SIGBUS信號。不過如果編譯成64位程序,Sun Studio使用的-xmemalign=8s,其中s選項設置意味對這種非對齊訪問產生SIGBUS信號,仍舊會遇到這個錯誤。
當然你也可以堅持在SPARC上使用GCC去編譯這種代碼。GCC有一個Type Attributes特性,在需人工對齊的變數後加上:__attribute__ ((aligned (4))); 4就是指定偏移量。比如:
short array[10] __attribute__ ((aligned (4)));
不過這個屬性只對Linker連接器可見的變數有效,也就是說對local variable無效。而且這種特性只能照顧到該數組,即第一個元素,並不為數組的每個成員設置偏移量。
如果一定要針對local variable或者數組的每個成員進行偏移量設置,可以考慮定義一個union的類型:union {short s;int i;}
❷ 最近我電腦老彈出ERROR
起因可能是下載來的文件不完整,或存放該程序的磁碟區壞了,也可能因病毒.無論何種原因,建議你聯系程序的作者,重新下載,再安裝.
或命令行中附加參數
/NCRC
試試安裝.(不推薦此法).
NSIS
錯誤
你正使用的安裝程序已經被破壞或不完整。
這可能是由於損壞的磁碟,或是下載失敗,或是病毒導致的結果。你可以聯系本安裝程序的程序員來獲取新的軟體拷貝。
NSIS
是「Nullsoft
腳本安裝系統」(Nullsoft
Scriptable
Installation
System)的縮寫,它是一個免費的
Win32
安裝、卸載系統,本來是一個由
Nullsoft
創建並用於作為
Winamp
及其插件發布的系統,但現已被上百個應用程序所應用。當使用到它的程序啟動時發生錯誤,就會彈出該窗口,比如花生殼軟體啟動時出錯錯誤,就有可能出現上述提示,此時請分析啟動了哪些軟體,檢查並修復該程序,再重啟,問題一般就能解決。
1.不使用任何加速的下載工具,再下載一次
2.升級你的殺毒軟體,再下載一次
3.關掉你的殺毒軟體實時監控,再下載一次
4.從另一個源(站點)重新下載,
5或者換一台計算機再重新下載
❸ 出現ERRORcode:-是啥原因啊
error code一般是指軟體系統中的錯誤代碼。
人們在使用電腦軟、硬體的時候偶爾會發生錯誤,由於錯誤的類型很多,為了對錯誤進行區分,系統設定了錯誤代碼(error code),以方便程序員調試錯誤或讓用戶知道錯誤原因。
如果發生錯誤,可以通過error code識別快速找到軟、硬體不能正常操作的具體原因,因為error code通常對應著程序內部的原有的設定判斷。
常見錯誤代碼:
302-對象已臨時移動。
304-未修改。
307-臨時重定向。
4xx-客戶端錯誤
發生錯誤,客戶端似乎有問題。例如,客戶端請求不存在的頁面,客戶端未提供有效的身份驗證信息。400-錯誤的請求。
401-訪問被拒絕。IIS定義了許多不同的401錯誤,它們指明更為具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在IIS日誌中顯示:
401.1-登錄失敗。
401.2-伺服器配置導致登錄失敗。
401.3-由於ACL對資源的限制而未獲得授權。
401.4-篩選器授權失敗。
401.5-ISAPI/CGI應用程序授權失敗。
401.7–訪問被Web伺服器上的URL授權策略拒絕。這個錯誤代碼為IIS6.0所專用。
403-禁止訪問:IIS定義了許多不同的403錯誤,它們指明更為具體的錯誤原因:
403.1-執行訪問被禁止。
403.2-讀訪問被禁止。
403.3-寫訪問被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒絕。
403.7-要求客戶端證書。
403.8-站點訪問被拒絕。
403.9-用戶數過多。
403.10-配置無效。
403.11-密碼更改。
403.12-拒絕訪問映射表。
403.13-客戶端證書被吊銷。
403.14-拒絕目錄列表。
403.15-超出客戶端訪問許可。
403.16-客戶端證書不受信任或無效。
403.17-客戶端證書已過期或尚未生效。
403.18-在當前的應用程序池中不能執行所請求的URL。這個錯誤代碼為IIS6.0所專用。
403.19-不能為這個應用程序池中的客戶端執行CGI。這個錯誤代碼為IIS6.0所專用。
403.20-Passport登錄失敗。這個錯誤代碼為IIS6.0所專用。
404-未找到。
404.0-(無)–沒有找到文件或目錄。
❹ 電腦上出現Error怎麼回事
板上的鈕扣電池電壓不足,建議換電池。
2.開機鍵盤三指示燈亮是按F1,找到Standard CMOS Features Setup選項,此項中找到 Load Fail-Safe Defaults ,選中後回車,再按Y,回車。 選擇Save&exit step(保存設置),直接按F10也可以,按Y回車自動重起。
3.有的不用重新設置,換電池後直接開機就可以了。
試試下面的兩種方法能否解決:
1、取下主板電池,過一會再裝上;也可以將主板上清除CMOS信息的跳線帽更換下位置,然後再恢復。
2、如果上述方法無效,更換主板上的紐扣電池試試。
護欄柱錯誤(fence post error),即越過數組末尾進行讀寫操作的錯誤。
它指的是這樣一個問題:要建立一堵長7米的護欄,如果兩個相鄰護欄柱相隔1米,需要多少個護欄柱?大多數人會說7個,但實際上需要8個。如右圖,很好地說明了這一點。
示意圖這種"少1"(off by one)計數可能是C++程序員的噩夢。所以學習C++語言需要習慣這樣一種觀念--一切都是從0開始計數。
相信作為程序員的我們在對程序進行編譯過程中經常會遇到錯誤,或者在運行過程中出現錯誤,在這里主要跟大家談談經常遇到的一些異常與錯誤,以及解決辦法。
異常是指程序在編譯或運行過程出現的錯誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯誤) 和Exception(異常)
(1)Error(錯誤)
一旦發生無法修復,但可以避免發生。
常見錯誤類:
IOError:I/O錯誤,當發生嚴重的I/O錯誤時,拋出此錯誤。
VirtualMachineError:虛擬機錯誤,當 Java 虛擬機崩潰或用盡了它繼續操作所需的資源時,拋出該錯誤。
StackOverflowError:棧內存滿了,當應用程序遞歸太深而發生堆棧溢出時,拋出該錯誤。
OutofMemoryError:堆內存滿了,因為內存溢出或沒有可用的內存提供給垃圾回收器時,Java 虛擬機無法分配一個對象,這時拋出該異常。
以上是一些常見的錯誤,在Error類中還有一些別的錯誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發生,可以捕獲並處理,不會導致程序終止,有時可以避免有時無法避免。
異常的分類:
1.編譯時異常(需要強制處理) 2.運行時異常(不需要強制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數據格式化異常
NoSuchFieldException:沒有匹配的屬性異常
NoSuchMethodException:沒有匹配的方法異常
SQLException:資料庫操作異常
TimeoutException:執行超時異常
常見的運行時異常:
RuntimeException:運行時異常
NullPointerException:空指針異常
:數組越界異
ClassCastException:類型轉換異常
IllegalArgumentException:非法的參數異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會遇到一些異常,那我們如何來處理這些異常就是一個急需解決的事情。
(1) 如何處理編譯時異常?
方法一:將需要處理的代碼塊放在一個try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進行try一下,如果沒有異常,則不會觸發catch,沒有輸出,一旦出現異常,那麼catch就會工作,在catch中捕獲異常信息,根據異常信息進行補救措施。
如以下代碼:
從結果可以看出,我們在輸入數據的時候出現錯誤,這樣通過自定義異常能夠讓我們更直接快速的找到運行或編譯時的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那麼到底三者有什麼區別?
Throwable:是指在在Java.lang包中的一個類,其包含了所有的異常和錯誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時異常,將方法中異常拋給上一級,在方法後面要加Throw Exception來進行拋。
throw:是指在自定義異常時,如果方法出現異常,那麼將作為引用方法的對象拋出。即拋出異常。
❻ 為什麼百度這種大網站的源代碼都會有error
做為一個程序員,可以很負責的告訴大家,網站有錯誤是最正常不過的事情,然而您說的網路的代碼中都可能有error ,這並不是程序員不知道,而是因為這些錯誤不會影響程序的使用與運行,由於兼容性的問題,程序員會考慮惹干個問題,但是總會有一些問題無法考慮到很全面,所以就會造成error的局面,當然這都是程序中可以容許的!
❼ internal server error怎麼解決
解決方法:
1、伺服器日常維護
進行停機處理,或者更新程序,這時候,瀏覽者登陸該網站,就會報500的錯誤,一般等維護更新完畢,啟動伺服器以後,就可以自動解決,用戶只需要耐心等待即可。
2、程序bug
當程序員編寫的程序不夠嚴謹,出現異常的時候,瀏覽者也會看到500的錯誤,解決這種問題的方法是,聯系程序開發人員,進行程序跟蹤,debug下程序,找到錯誤所在,然後修改程序,經測試沒有問題,重新發布程序,然後系統正常。
3、中毒引起
有的時候,有寫病毒會改寫伺服器的一些設置,導致用戶無法正常訪問,報500的錯誤,這時需要程序員進行殺毒處理,處理完程序後,系統恢復正常。
4、配置問題
有的時候,用戶無法訪問網站,是因為系統參數的配置有問題,遇到這種情況,找BASIS人員進行處理,處理完畢,訪問就正常了。
5、資料庫問題
網站讀寫操作都在資料庫,資料庫如果異常的話,訪問也會不正常,遇到此類情況,通知網站的DBA,讓他幫助分析解決,解決完畢後,訪問就會正常。