![]() |
6.13 TRAP kódok és IPE errorok jelentéseA trapek a hibás mûködés leginkább szembetûnô tünetei. A trapek rendszerint igen terjedelmes hibaüzenetekkel járnak, s a felhasználó nem is nagyon tud mást tenni velük, mint feljegyezni ôket, s jelenteni a terméket forgalmazó cégnek. A trapektôl ugyanakkor nem kell félni, mivel azok a komolyabb problémák bekövetkezésétôl (például teljes adatvesztés) óvnak meg bennünket. Az Intel 386-os processzorától kezdve lehetôség nyílt az úgynevezett védelmi gyûrûk használatára. Ez azt jelenti, hogy ha a processzor egy hibát észlel, akkor a hiba lekezelésére a védelmi gyûrûnek megfelelô hibakezelô rutint hívja meg. Bár a 386-os (és késôbbi) processzor 4 védelmi gyûrûvel rendelkezik, az OS/2 (a legtöbb operációs rendszerhez hasonlóan) csak a 0. és a 3. gyûrût használja. A 0. gyûrûn belül futó alkalmazások korlátlan hardvereléréssel rendelkeznek. A rendszer stabilitása érdekében a 0. gyûrûn belül futó alkalmazások száma korlátozott, többnyire csak a rendszer magját képezô kernel és a közvetlen hardverelérést igénylô driverek kapják meg ezt a privilégiumot. A többi alkalmazás a 3. gyûrûben fut, amit user privilégiumnak is neveznek. Amennyiben ezek az alkalmazások hozzá akarnak férni a hardverhez, akkor azt csak a 0. gyûrûn belül futó kód segítségével tehetik meg. Ez persze lassítja az alkalmazások futási sebességét, viszont jól megírt kernel és driverek esetén növeli a rendszer stabilitását. Amennyiben a trap a kernel szinten történik, akkor az általában a rendszer teljes megállását is jelenti. A user szintû trapeket általában az alkalmazás maga, vagy az OS/2 kezeli le. Ezeknek a trapeknek a következménye az, hogy az alkalmazás futása megszakad. Kernel szintû trapek esetén a rendszer rögtön megáll, és a képernyôn valami ilyesmi fog megjelenni: TRAP 000e ERRCD=0000 ERACC=**** ERLIM=******** EAX=ff050c20 EBX=000000bb ECX=ffff00c1 EDx=fff379b8 ESI=ffe55a3c EDI=00000000 EBP=00004eb8 FLG=00013282 CS:EIP=0160:fff8dbb8 CSACC=c09b CSLIM=ffffffff SS:EIP=0030:00004eb4 SSACC=1097 SSLIM=00003fff DS=0158 DSACC=c0f3 DSLIM=ffffffff CR0=8001001b ES=0158 DSACC=c0f3 DSLIM=ffffffff CR2=000000c7 FS=0000 FSACC=**** FSLIM=******** GS=0000 GSACC=**** GSLIM=******** The system detected an internal processing error at location ##0160:fff66bf0 - 000d:9bf0. 60000, 9084 048600b4 Internal revision 8.125, 94/02/16 The system is stopped. Record the location number of the error and contact your service representative. User trapek esetén vagy egy pop-up (esetleg VIO) üzenetet, vagy pedig egy bejegyzést kapunk a popuplog.os2 fájlban attól függôen, hogy milyen verziójú OS/2-n van, vagy hogy benne van-e a Config.Sys-ben SUPPRESSPOPUPS kulcsszó. User trap bekövetkezésekor a következô stílusú információ generálódik: 11-21-1999 16:40:12 SYS3175 PID 005b TID 0001 Slot 0061 F:\OS2\SANE\BIN\SANE2.EXE c0000005 1e270c28 P1=00000001 P2=00000000 P3=XXXXXXXX P4=XXXXXXXX EAX=001227b0 EBX=00000000 ECX=00000000 EDX=00000002 ESI=00000000 EDI=00000000 DS=0053 DSACC=d0f3 DSLIM=1fffffff ES=0053 ESACC=d0f3 ESLIM=1fffffff FS=150b FSACC=00f3 FSLIM=00000030 GS=0000 GSACC=**** GSLIM=******** CS:EIP=005b:1e270c28 CSACC=d0df CSLIM=1fffffff SS:ESP=0053:00122718 SSACC=d0f3 SSLIM=1fffffff EBP=00122720 FLG=00012293 LIBSANE.DLL 0001:00000c28 Amikor trapinformációt kell elemeznünk, akkor az egyik legfontosabb, hogy maghatározzuk, hogy a user vagy pedig kernel szintû trappel van-e dolgunk. Szerencsére ez könnyen eldönthetô a CS utolsó (hexa) értékének alapján:
Ha például a CS:EIP=005b:0001001f CSACC=d0df CSLIM=1bffffff vagy CS = 005B CSLIM = 1BFFFFFF DS = 0053 DSLIM = 1BFFFFFF trappel van dolgunk, akkor a CS utolsó hexa digitje 5B, ami a fenti táblázat alapján user trapet jelent. A trapinformáció a trap fajtáját is tartalmazza. Egy kernel trap elsô sora például az lehet, hogy TRAP 000e ERRCD=0000 ERACC=**** ERLIM=********. Ebben az esetben TRAP 000e-rôl van szó. Az alábbi táblázatban összefoglaltuk a lehetséges trapfajtákat:
Leggyakrabban a D és E jelû TRAP fordul elô. Különösen az E gyakori, fôleg akkor, ha a gépben keverednek a különbözô elérési idejû és/vagy típusú memóriamodulok. Ha nincs módunkban egyforma modulokat használni, akkor néha az is segít, ha a bank feltöltésénél a leglassabb modul(oka)t tesszük az elsô hely(ek)re. Tipikus még Warp 4 esetében a TRAP 8. Ezeket a problémákat szinte mindig megoldja az IBM1S506.ADD vezérlô lecserélése egy régebbi változatra. Az Internal Processing Errorok (IPE) a TRAP-ekhez hasonló körülmények között jönnek létre. Például, az üzenet The system has detected an internal processing error at location ##0160:FFF6FC01 - 000D:00015C01..... azt jelenti, hogy egy TRAP D-nek megfelelô problémával állunk szemben. Ezt úgy állapíthatjuk meg, hogy megkeressük az üzenetben az elsô három egymás után következô 0-át és az ezután következô szám vagy betû jelenti a TRAP fajtáját, ami a példa esetében D. A hiba elhárításakor tehát a TRAP D-nél leírtakat kell figyelembe vennünk. Fontos lehet még a location szó után álló cím is. Amennyiben maga a kernel trappel, akkor itt a 160-as cím szokott megjelenni. Ettôl eltérô értékek általában driver hibára utalnak. A CSLIM értéke egyedi, ezért ez alapján elvileg behatárolható a driver, amely a galibát okozza. Ha például a CSLIM=0000f113 értékkel van dolgunk, akkor a hobbes.nmsu.edu-ról letölthetô EXEINFO program segítségével (exeinfo -f -lf113 c:\*.*) találhatjuk meg a hibás modult. Az IBM Red Books sorozatában megjelent az OS/2 Debugging Handbook (SG24-464x-00, x=1,2,3,4), amelyben további támpontokat találhatunk a trapek elemzéséhez és elhárításához.
A témához kapcsolódó más oldalak:
|