一般藍畫面的成因
出現藍畫面,通常我們名以發現是由於General Protection Fault,Fatal Exception,Invalid
Page Fault等錯誤所引致.這些錯誤,成因不盡相同,但綜合而言,多數是一些軟件或硬件的不兼容及衝突所致.
1.General Protection Fault
其中一種最常見的藍畫面錯誤,就是這個GPF.出現GPF的時侯,可能是以Pop Up Windows的形式出現,未必一定有藍畫面.而這個錯誤,會令到應用中的程式出現<沒有回應>的情況.而即使用戶利用Crtl+Alt+Del打開關閉程式<沒有回應>的情況強行關閉,但亦未必
能將問題解決.
第一,所應用的程式,未作儲存,而會將資料遺失.
第二,軟件在這種情況下關閉,所佔用的記憶體定址未必就能如常釋放出來.
換言之,依然會影響到系統繼續出現錯誤,仞系統其他應用中的程式也一拼受牽連.
要解釋GPF的成因,我們就先要了解Windows本身與Win16,Win32及DOS程式之間的關係.從程式設計理論當,
DOS程式與Windows程式是完全由硬件的設計上分開的.
CPU會先建立一個Virtual Machine(VM)環境.而我們常用的Windows系統便會利用這個硬件功能設置DOS
VM及用來執行Windows程式的System VM.
而System VM是以所謂的系統軟件來分隔Win16及Win32,與Win32及Win32之間的程式.這解釋了何之當掉的DOS程式不會怎樣影響到其他Windows程式.但若Win16或Win32出現問題,則會令整個Windows系統當機.
在Win16的程式中,各種系統資源,記憶體及訊息等都是共用共享,所以當任何一個Win16 程式發生問題,也會令所有Win16程式無法正常運作.同時,Win16程式會在User資源及GDI資源上影響到Win32程式.
而在System VM環境下的Win32程式,則所有記憶體及各種資源宦是獨享的,而且是自行獨立作訊息處理,雖比Win16來得穩定,但由於Win32會在某些情況下影響到Shell系統的
Explorer程式,特別在不正常結束時會影響其他程式運作,令系統不當機,資料流失.
由於這個Win16及Win32相互影響干擾,會導致系統不穩定,在Windows的程式設計中,就制定了GPF,令程式之間不能侵犯對方的權利及自由(位址及資源).而一旦程式出現違規情況,就會以GPF來阻止程式繼續執行.
2.Fatal Exception Error/Fatal System Error
Fatal Ecception Error是指整個程式在執行時發生了嚴重的問題,通常是指程式並非以正常狀態執行.換言之, Windows並不能夠解讀程式發放出來的指令,而付到系統錯亂,因而出現藍畫面.
跟GPF相似,Fatal Ecception Error可以是藍畫面,可以是Pop Up Message Box,而Pop
Up錯誤視窗後,可以再出現藍畫面.而在這個Message Box,用戶可以點選直接關閉程式,將程式關閉的話,理論上不會暘婚整個系統.
程式出現不正常運作,通常是程式本身受到破壞.這可能是由於不正確的安裝程序,但多數是Setup程式的設計不良,而不是用戶本身的設定錯誤.另外,也可以是記憶體出現問題與及硬碟中資料受到破壞.
常見的GPF情況
1.違規存取
Access Violation及Incalid Page Fault可以理解為違規存取.違規存取是GPF中最常見的,這是指程式使用不屬於自已的記憶體位址,侵犯了其他程式的使用限權.至於為甚麼出現,則一般都是程式本身設計有Bugs,或系統出現不穩定而令程式違規存取.
2.頁面錯誤
某個程式在執行某些應用時,除了在記憶體儲存相關的資料外,亦會利用硬碟上的Swap來作儲存.頁面錯誤(In Page
Error)就是程式中某些資料因為暫時未有應用而會先儲存在硬碟的Swap上,但在讀取時無法從Swap中取回資料的話,就會產生頁面錯誤.這是系統與硬碟的問題,而不是程式本身的設計不當.
3.Stack Fault
當發出並下達指令於記憶體的數量超出系統所定下之Stack限制,就會出現Stack Fault或Stack Overflow,這通常是程式本身的特殊功能所造成.一般來說,出現GPF會產生三種破壞.
第一:發生錯誤的程式會影媎其他正在運作中程式,令其他程式出現<沒有回應>的情況,這些資料虐 會因無法儲存而遺失.
第二:出現GPD會令程式無法繼續執行,必須關閉.
第三:系統會Hang機企<System Busy>,必須將電腦重新啟動.
小結
事實上,不管是GPF企Fatal Exception Error,當出現這類問題時,就會出現所謂的藍畫面.上述所談的,是比較近乎理論方面的分析,後文所分析的將會是實際我們使用時,經常遇到的,及其解決方案.
解決方案
藍畫面這類的系統問題經常會發生,以下是編輯部將過去經驗所得而作出一個歸納.
Case 01--->
原因:
Windows同時啟動太兔程式.系紜資源降至30%以下,在執行個別程式時,記憶體及虛擬記憶體均找不到所需資料.
結果:
出現Fatal Error Exception
解決辨法:
不要同時開啟過多的程序,同時不要預載太多常駐程式.至於因為開啟太多程式而發生<異常錯誤>,嘗試將部份程式關閉,以釋放系統資源,要不然,就只有重新啟動電腦.讀者可以利用Windows本身的一個簡單監測方法.在active的視窗,中點選說明--->關於XXX,
接著就可以查看所剩下的系統資源.
Case 02--->
原因:
超頻.由於CPU速度加快了,令系統工作不穩定,特別是超外頻時,令其他周邊也一拼加速,系統更見不穩,令CPU不能讓程式正常地存取記憶體.
結果:
出現Fatal Error Exception,或執行某類程式昤,會出現dl檔案的錯誤.
解決方法:
將超頻幅度建低,或換上較大型的散熱扇,建低CPU溫度,付系統保持穩定.
Case 03--->
原因:
硬件衝突.這裡一般指驅動程式及硬件及硬件上的衝突.各個組件的IRQ,DMA等,都有可能有某些不兼容的地方,而導致藍畫面.
結果:
Fatal Exception Error, Hang機
解決方法:
要解決硬件上的衝突,一般比較困難.最常見的IRQ衝突,要留意的是主機板每條PCI槽的分配情況.在安裝時,最好將PCI裝置,在Windows完成安裝後才逐件插上主機板.同時,可以嘗試將ACPI功能Disable,在透過主機板BIOS將IRQ自行設置.一旦問題發生以後,可以嘗試轉插其他PCI,應該會有幫助.同時要留意的是,某些裝置本身是不可以與其他PCI卡分享IRQ.
Case 04--->
原因:
硬碟空間太少,或不連續區太多.
結果:
出現General Protection Error
解決方法:
經常淪理硬碟中的廢物檔,進行磁碟重組,均可將系統保持在最佳化狀態.
Case 05--->
原因:
程式中有Bugs.許多程式,在撰寫的時侯由於種種問題,會出現記憶體定址錯誤分配,佔據了其他程式的記憶位址,令系統出現問題.因此,當執行特定的應用,就會出現藍畫面.
結果:
出現General Protection Error
解決方法:
基本上,假如這一類程式或軟件屬於必須品,能夠解決的方法不多.尤其有Bugs程式可以跟Windows不兼容,也可以跟其他秤式發生衝突.但可以留意藍畫面中的錯誤碼,往往可以憑著這些錯誤碼找出源頭,例如:程式之間發生衝突,Windows藍畫面會報告那一個檔案發生了問題.
Case 06--->
原因:
DLL及OLE衝牧.幾乎所有程式都要使用特定版本的動態連接庫DLL或者OLE組件,如果在安裝某個軟件時,舊版本的DLL覆蓋了新版本的DLL,或者刪除應用程式時,刪除了其他有用的DLL檔案,崶布可能出現藍畫面.
結果:
Fatal Exception Error
解決辨法:
這個時侯,可以利用Windows本身的版本衝突管理員來查看那一個檔案出現了問題.有些時侯,可以透過複製Win98 CD碟的原始檔案來解決問題,或者從其他電腦找來適合的檔案.要不然,也可以試試利用Norton
Utilities將問題解決.
小結:
以上的問題,一般性較高,通常會導致Kernel32.dll檔案出現問題,這個時侯,未必一定因伙Kernel32.dll出現問題,只不過是系統硬件及軟件的不良設定或設計所引致.
{{{實用Tips}}}
微軟網站支援
對於各雒視窗中出現的問題,我們可以利用微定網站尋求解決方案. Microsoft本身會將許多錯誤訊息,及一切有關的操作程序等,放於<微軟知識庫>之中.不過,在上網查看Microsoft網站支援的話,則需要輸入產品序列號,因此,如果是使用盜版軟件的話,則不能進入Microsoft知識庫查詢資料.
藍畫面錯誤速查
Case 01--->
藍畫面出現:
Explorer has caused an invalig page fault module Kernel32.dll
或
Explorer has cused an invalid page fault module Explorer.exe
問題:
系統檔Kernel21.dll受損,抉而每當Explorer啟動時,竟會構成Invalid Page Fault.
假如當系統啟動時就會出現這個錯誤訊息,就表示系統已經受到嚴重損壞.
解決方法:
1.嘗試從其他電腦複製Kernel32.dll(或Explorer.exe)檔案於問題電腦之中,存取位置是Windows\System.
2.可以嘗試修復Registry來解決.Windows ME的話,可以用<系統還原>.利1Registry Checker Tool (就是Scanreg.exe)恢復先前的Registry正常的值,應該可以解決Registry出曾的問題.
由於系統本身未必能將Windows正常啟動,因此,我們要進入DOS環境工作.在重迎啟動電腦後,按F8出現開機選單,選擇Command Promt Only,啟動最基本的開機檔,並在C:\鍵入Scanreg/restore,再選擇出事的Registry來進行還原.
Case 02--->
藍畫面出現:
Explorer caused an invalid page fault in module Shdocvw.dll
或
Iexplorer caused an invalid page fault in module Shdocvw.dll
問題:
應該是IE 5.0中的Histry資料夾受破壞
解決方法:
Disable<自動完成>功能:
--->控制台-Internet選項-進階-瀏覽-使用即時自動完成Web功能-取消剔號.
重開IE,再鍵入網址,沒有問題即History Folder出事,先刪除整個History資料夾,再啟動IE,應逐可以解決.IE本身會重新建立History資料夾.
Case 03--->
藍畫面出現:
ICQ caused an invalid page fault in module ICQCORE.DLL at xxxx:xxxxxxxx
問題:
這通常是因為ICQ Database版本與ICQ程式版本不同所致.因此,當將所Backup的Database Folder放回ICQ Folder之中,務必要先執行ICQ
Database Converter程式.其實在升級ICQ時,很多時間都會導致ICQ出現,而且,新版本的ICQ耗用資料更多,除非你有試用新版本的新功能,否則,升級ICQ未必真的是好事.
Case 04--->
藍畫面出現:
_DELIS caused a general protection fault in module _ISDEL.EXE at ......
問題:
這是防毒軟件安裝程式的衝突所致.
解決方法:
確定軟件來源沒有問題,就把防毒軟件關閉,再安裝指定軟件._DELIS是負責刪除安裝軟件後的所有暫時檔,屬於Install Shield其中一個指令.我們安裝軟件時,Setip程式都會將檔案暫時解壓至Windows
Temp資料夾中,讓安裝程式將有關檔案複製至系統當中.
Case 05--->
藍畫面出現:
Msimn caused an invalid page fault in module Msoe.dll
或
Msdimn cause an invalid page fault in module "unknown"
或
Msimn caused an invalid page fault in module Directdb.dll
或
Msimn caused exception C000006h in module Directdb.dll
或
Msimn caused an invalid page fault in module directlydb.dll at xxx...
或
Msimn caused an invalid page fault in modu;e kernel32.dll
問題:
Msimn基本上都是屬於Outlook Express的問題,出現的原因甚多,可能是因為設定郵件規則而令程式出現邏輯錯亂,也布可能是因為Database檔案受損.就以郵件規則為例,若其中一個郵件本身是下載後才能進行Filter但同時又選擇<不要從伺服器下載>或是<從伺服器刪除>,換言之,伺服器跟本沒有郵件,Outlook
Express就不能執行<不要從伺服器下載>或是<從伺服器刪除>這些選項.因此,類似的設定由於有邏輯錯誤,只會令到程式計算出錯.另外,與module
directdb.dll有關的錯誤,則應該屬於Outlook Express database檔受到破壞所致.
解決方法:
1.留意Outlook Express的郵件規定的設定
2.Folder.dbx是Outlook Express的Database,刪除這個資料夾,應該可以解決問題.系統會在下次啟動Outlook Express時,會重新建立Folder.dbx.
要是這些方法也行不通,由於Outlook Express屬於IE及Windows的核心部分之一,重裝Windows會是最快的解決方法.
Case 06--->
藍畫面出現:
Rundll32這舍程式執行無效,即將關閉.....
或
Rundll32 caused a general protection fault in module Mmsystem.dll....
問題:
一般來說,有可能是因為System.ini缺少了一行drivers=mmsystem.dll所致.
解決方法:
1.在System.ini加上相關的指令.
--->利用記事本打開System.ini,在[Boot]下加入ddrivers=mmsystem.dll
2.直接於開始-執行中鍵入msconfig,並於System.ini中開啟[Boot]資料夾,
加上:drivers=mmsystem.dll
Case 07--->
藍畫面出現:
A fatal Exception 0E has occured at 0028:C00082CD in VxD(01) +000072CD
問題:
可以是顯示卡驅動程式與作業系統不相容引起
解決方法:
有必要找最新驅動程式來更新,因為廠方經常都會推出新版本的驅動程式,供用戶下載,最大的作用是將一些本來存在的Bugs除去.
結語
藍畫面,General Protection Fault,Fault Exception Error等,都划是Windows中經常遇到的問題.打從Windows3.1開始就有,就算今天最新的Windows,一樣經常出現諡類錯誤訊息.但要留意的是,並不一定每一個錯誤訊息,就代表是特定的程式,軟件或硬件所引起的.換言之,即使是出現相同的錯誤訊息,也可能是因為不同的衝突所引致,亦即發生不同情況,有時亦只會顯示相同的錯誤
訊息.當遇到這類問題時,便要細心查看問題所在並將之解決.