Način rada za otklanjanje pogrešaka sustava Windows 7. Načelo operativnog sustava jezgre pogrešaka. Simboli za ispravljanje pogrešaka kernela

Izraz "jezgreni ispravljanje pogrešaka" znači proučavanje unutarnje strukture nukleus podataka i (ili) trag funkcija funkcija u kernelu. Ovo ispravljanje pogrešaka je vrlo koristan način za proučavanje unutarnjeg Windows uređaja, budući da vam omogućuje prikaz prikaza internih informacija o sustavu nedostupne kada koristite bilo koje drugo sredstvo i daje jasnu ideju o napretku koda u kernelu.

Prije razmatranja različitih metoda pogrešaka o pogrešci kernela, istražite skup datoteka koje će biti potrebne za provedbu bilo koje vrste ispravljanje pogrešaka.

Simboli za ispravljanje pogrešaka kernela

Simbol datoteke sadrže značajke i promjenjive imena, kao i dijagram i format struktura podataka. Oni generiraju program povezivač (Linker) i koriste ga debugger za linkove na ta imena i prikazati ih tijekom sesije debuga. Ove informacije obično nisu pohranjene u binarnom kodu, budući da nije potrebno prilikom izvršavanja koda. To znači da bez njega, binarni kod postaje manji u veličini i izvodi se brže. Ali to također znači da kada ispravljanje pogrešaka, morate pružiti pristup debugger pristup datotekama povezanim s binarnim slikama na koje se poveznice vode tijekom sesije za ispravljanje pogrešaka.

Da biste koristili bilo koji alat za otklanjanje pogrešaka u načinu rada kernela kako bi se proučio interni uređaj strukture podataka sustava Windows kernela (popis procesa, blokova), popis učitanih upravljačkih programa, informacije o korištenju memorije, itd.) Trebate odgovarajuće datoteke znakova I, barem, likovi datoteku za binarnu sliku kernela - ntoskrnl.exe. Tablica znakova moraju odgovarati verziji binarne slike iz koje su izdvojili. Na primjer, ako je instaliran paket Windows Service Pack ili neki popravak koji ažurira kernel, morate dobiti ažurirane datoteke znakova.

Učitajte i instalirajte znakove za različite verzije sustava Windows nije teško, ali nije uvijek moguće ažurirati popravke za popravke. Najlakši način da dobijete željenu verziju znakova za ispravljanje pogrešaka tako što ćete kontaktirati Microsoft simbol poslužitelja posebno dizajniran za to, koristeći posebnu sintaksu za to na put do simbola navedenih u debuggeru. Na primjer, sljedeći put do simbola čini ispravljanje pogrešaka za preuzimanje znakova s \u200b\u200binternetskog poslužitelja simbola i spremanje lokalne kopije u mapu C: Simboli: SRV * C: Simboli * http: //msdl.microsoft.com/download/ simboli

Detaljne upute za korištenje simboličkog poslužitelja mogu se naći u datoteci za ispravljanje pogrešaka ili na internetu na web stranici http://msdn.microsoft.com/en-us/windows/hardware/gg462988.aspx.

  • Autori:

    Barinov s.s., Shevchenko O.G.

  • Godina:
  • Izvor:

    Informatika i računalna tehnologija / Materijali VI međunarodne znanstvene i tehničke konferencije studenata, diplomskih studenata i mladih znanstvenika - 23. i 25. studenoga 2010., Donjeck, DonNtu. - 2010. - 448 str.

bilješka

Usporedna analiza ispravljanja pogrešaka korisničkog načina i načina rada kernela primjenjuje se na Microsoft Windows operativni sustav, razlikuje i probleme organiziranja potonjeg ispravljanja ispravljanja. Na temelju dobivenih rezultata, glavni zahtjevi za izgradnju debuggera režima kernela u slučaju nužde i interaktivne ispravljanje pogrešaka. Analiza postojećih rješenja provedena je za usklađenost sa zahtjevima. Posebno se posebna pozornost posvećuje Microsoft Windows debugger debuggeru.

Glavni dio

Debugging je proces određivanja i uklanjanja uzroka pogrešaka u softveru. U nekim projektima, ispravljanje pogrešaka zauzima do 50% ukupnog vremena razvoja. Debugging može se značajno pojednostaviti kada se koristi specijalizirani alati koji se stalno poboljšavaju. Glavni takav alat je debugger, koji vam omogućuje kontrolu implementacije softvera, gledajući njegov potez i ometanje s njom. Alati za ispravljanje kernela su uglavnom koristili programeri vozača.

Primjena alata za razvoj alata nudi širok raspon značajki. Svako integrirano razvojno okruženje uključuje mogućnost ispravljanja pogrešaka bez potrebe za korištenjem usluga treće strane. Ako govorimo o sustavnom softveru i razvoju vozača, onda na temelju njegovih specifičnosti, razvojni proces je iznimno težak i ima malo automatizirane. Sve faze razvoja, uključujući ispravljanje pogrešaka, su odvojene. Da bi se izvršio svaki od njih, potrebni su posebni uvjeti: pisanje programskog koda se obavlja na punopravnom računalnom sustavu, ispravljanje pogrešaka - na sustavu za ispravljanje pogrešaka, testiranje - ovisno o okolnostima itd. Isti kernel režim debugger je složeniji u razvoju i, prema tome, manje prijateljski.

Općenito, možemo govoriti o nedostatku jezgrenu ispravljanje pogrešaka. Iako su to sredstvo dostupno, često nije potrebno govoriti o alternativama. Na primjer, Microsoft Windows Debugger debugger debugger ima previsok prag unosa. Mnogi programeri govore o prvom negativnom iskustvu kada su ga upoznali, a većina njegovih mogućnosti ostaje spaljena.

Na temelju strukture virtualnog adresnog prostora, ako je pogreška napravljena u primjeni, kao rezultat toga, aplikacija će zabilježiti podatke u proizvoljnu memorijsku lokaciju, aplikacija će oštetiti samo vlastitu memoriju i neće utjecati na rad drugih aplikacije i operativni sustav. Budući da je kod za posljedicu načina rada može oštetiti važne strukture podataka operativnog sustava, što će neizbježno dovesti do uobičajenog neuspjeha. Neučinkovito pisani vozač također može uzrokovati ozbiljnu degradaciju cijelog operativnog sustava.

    Moderni debuggersi pružaju sljedeće osnovne funkcije:
  • ispravljanje pogrešaka na razini izvorne kodeksa;
  • upravljanje izvršenjem;
  • pregled i promjena memorije;
  • pregledajte i promijenite sadržaj registara procesora;
  • pogledajte snop poziva.

Kako bi se olakšao rad s kodom za demontaže, koristi se tzv. Znakovi za ispravljanje pogrešaka. Tijekom rada povezivača, uz sliku izvršne datoteke, podatkovna datoteka se također može stvoriti s informacijama koje nisu potrebne prilikom izvršavanja programa, ali je iznimno korisno kada je ispravljanje pogrešaka: imena funkcija, globalne varijable, opis struktura. Znakovi za ispravljanje pogrešaka dostupni su za sve izvršne datoteke operacijskog sustava Windows.

U okviru kontrole izvršenja znači mogućnost prekida i obnavljanja izvršenja Programskog koda kako bi se postigla određena naredba u programu. Ako se programski kôd izvršava u koraku po korak - prekid se javlja za svaki programski jezik Lexeme ili kada izlazi iz potprograma. Uz slobodno izvršenje, prekid izvršenja nastaje u naprednim dijelovima koda - mjesta u kojima se instaliraju točke zaustavljanja.

Pri prekidu koda za način rada jezgre pojavljuje se sljedeća dilema. Debugger za interakciju s programerom koristi korisničko sučelje. Oni. Na minimumu, vidljivi dio debuggera izvodi se u korisničkom načinu i on prirodno koristi sučelje za programiranje aplikacija (Windows API), što zauzvrat počiva na modulima za kernel. Prema tome, suspenzija kodalnog koda jezgre može dovesti do međusobnog blokiranja: sustav će prestati reagirati na zahtjeve korisnika.

Da biste pristupili memoriji kernela, komponente debuggera također se moraju izvesti u načinu rada kernela. To dovodi do pojave dvaju problema odjednom, što su očite posljedica organizacije memorije u zaštićenom načinu procesora.

Prvi problem se odnosi na emitiranje virtualnih memorijskih adresa. Vozači stalno komuniciraju s aplikacijama korisnika režima dodavanjem pristupa njihovom pamćenju. Windows operativni sustav emitira virtualne adrese na fizički, vođeni konceptom konteksta struje. Kontekst potoka je struktura koja odražava stanje struje i uključujući, posebno, skup registara i neke druge informacije. Kada se kontrola prenosi u drugi tok, nastaje kontekst prekidač, u kojem se spremaju informacije o jednom potoku i informacije o drugom obnovljeni su. Kada prebacite kontekst struje u struju drugog procesa, direktorij stranice koji se koristi za emitiranje virtualnih adresa na fizički također je uključen.

Osobitost je da kada pozive sustava dispečeta, operacijski sustav Windows ne mijenja kontekst. Zbog toga se kôd načina rada kernela može koristiti virtualnu adresu korisničkog načina rada.

U suprotnom, situacija je prilikom otpreme prekida ili izvođenja niti sustava. Prekid se može pojaviti u bilo koje vrijeme, stoga je nemoguće predvidjeti koji će se kontekst potoka koristiti. Sistemski tokovi ne pripadaju bilo kojem procesu i ne mogu emitirati virtualnu adresu korisničkog načina rada. Odavde slijedi da je u takvim situacijama nemoguće uputiti se na memoriju korisničkog režima.

Drugi problem je privlačenje pokretne memorije. Većina informacija u memoriju je premještena i u bilo koje vrijeme može se premjestiti iz fizičke memorije na tvrdi disk u datoteci stranice. Ako se pogledate na stranicu koja je odsutna u fizičkoj memoriji, u normalnoj situaciji, procesor će generirati prekid memorije upravitelja memorije, a kao rezultat toga, stranica će se pročitati s datoteke stranice i učitati u fizička memorija.

Opisano ponašanje je povrijeđeno ako je program programa za ispravku prisiljen koristiti visoku razinu upita prekida (razine prekida, iRQL). S IRQL-om, koji se podudara s ili prekoračenje IRQL memorijskog upravitelja, dama neće moći učitati stranicu koja nedostaje, jer Operativni sustav će blokirati grešku prekida. To će dovesti do kolapsa operativnog sustava.

Ispravljanje pogrešaka prihvaća se za interaktivnu i hitnu situaciju. S interaktivnim lokalnim ispravljanjem pogrešaka, debugger se izvodi u istom sustavu kao i otklonjen za ispravljanje pogrešaka. S interaktivnim daljinskim uklanjanjem otklanjanja pogrešaka, u različitim sustavima obavlja se u različitim sustavima. Prilikom ispravljanja pogrešaka kernela kod, sustav se mora pratiti, počevši od prvih koraka svog preuzimanja, kada mreža ne funkcionira, dakle, jednostavna serijska sučelja, kao što su COM, FireWire, USB, koriste se za komunikaciju sustava. Nedavno, zbog trendova u razvoju virtualizacije softvera na različitim razinama apstrakcija, virtualni strojevi se sve više privlače. Osvojivši OS djeluje kao otklanjanje pogrešaka, OS postavljen uključuje korisničko sučelje debuggera.

Dakle, za hitne ispravljanje pogrešaka ne morate instalirati alat za ispravljanje pogrešaka na ispitno računalo. Raspodjela operacijskog sustava Windows uključuje mehanizme za provedbu hitnog ispravljanja pogrešaka. Prije ponovnog pokretanja operacijski sustav može uštedjeti informacije o njegovoj državi da programer može analizirati i saznati uzrok. Ove informacije pohranjene u datoteci nazivaju se odlagalište memorije.

Osnovna sredstva za ispravljanje pogrešaka osnovnih jezgre osigurava proizvođač operativnog sustava Windows u okviru besplatnih alata za ispravljanje pogrešaka za Windows paket. Alati uključuju grafičke i konzole uređaje Windbg i KD, respektivno (u daljnjem tekstu Windows debugger). Rad ovih pogrešaka temelji se na mehanizmima koje su provodili programeri operativnog sustava i položeni u svoj kernel.

Glavni način rada sustava Windows Debugger je način naredbenog tumača. Zbog modularne strukture, zajedno s isporučenim programerima, Windows debugger naredbe podržava module trećih strana nazvanih proširenja. Zapravo, većina ugrađenih naredbi također je uređena u obliku proširenja.

Windows Debugger je usmjeren na udaljeno interaktivno i hitno ispravljanje pogrešaka, kada se otkriju sve njegove sposobnosti. U isto vrijeme, punopravno lokalno interaktivno ispravljanje pogrešaka nije podržano: debugger vam omogućuje da vidite neke strukture kernela.

Postoji produžni modul za Windows Debugger nazvan Livekd, stvorio Mark Russinianovich, koji u nekom smislu implementira lokalno interaktivno ispravljanje pogrešaka. Livekd na putu stvara odlagalište memorije radnog sustava i koristi ga za ispravljanje pogrešaka.

"Alati za ispravljanje pogrešaka za Windows" redovito se ažuriraju i podržavaju sve moderne operacijske sustave Windows.

Softce kernel debugger, koji je proizveo computaware u softverski paket DAILTSTUDIO, tradicionalno je izvršio alternativu "alatima za otklanjanje pogrešaka za Windows". Posebno obilježje softvera bila je provedba lokalnog interaktivnog ispravljanja pogrešaka na podržanim hardveru. Debugger je gotovo mogao u potpunosti kontrolirati rad operativnog sustava.

Od 3. travnja 2006. godine ukinuta je prodaja obiteljskih proizvoda DriverStudio zbog "mnogih tehničkih i poslovnih problema, kao i općeg statusa tržišta." Posljednja verzija operativnog sustava, čija je podrška je provedena je Windows XP servisni paket 2. U pravilu, ažuriranja servisa ne mijenjaju sučelje aplikacije operativnog sustava, ali broj brojeva sustava poziva i druge informacije o nedokumentiranim informacijama mogu proći a promijeniti. Softce debugger oslanjao se na strogo propisane adrese unutarnjih struktura podataka. Kao posljedica toga - s održavanjem servisnog paketa 3 kompatibilnost je prekinuta. Očito, više kasnije verzije operativnog sustava Windows također nisu podržane.

Syser Kernel Debugger stvorio malu kinesku tvrtku Sysersoft kao zamjena za točki debuggera. Prva konačna verzija objavljena je 2007. godine. Kao što je softvera, Syser Kernel Debugger može obavljati interaktivno ispravljanje pogrešaka o operativnom sustavu. Podržane su samo 32-bitna izdanja modernih verzija sustava Windows.

U ovom trenutku, Windows Debugger je glavni alat među programerima kernel modula. Također koristi tim za razvoj operativnog sustava Windows.

cPP OelPpt raspored hlbbeus rp tbvpffu na pfmbdlpk sdtb na btbtyky dbnrbny rbnsfy. LBN RTBCHYMP, CHBN OKHTSOP VKDEF OBBDBFS PDOP Yuy Khuftspufch rpdlbüli, webcme retauyuyui / etc / fstab. UPTPU PVTBFCF RBNSFY NA HUFPKUFBB, OE Scamsayus Huftspufby Rapdlbüli, Ottinet, Mephisp, H Cleaner NPnofof OE Rapdabychbafus.

Bilješka: Yurpmshkfa lpnbodh. dumpn (8) DMS Chlbobyus SDTX Street, Zej Okhtsop Upbosfsh bchttchchch. Rpume fittply rp lpnbode swapon (8) TBDEMB RPDLBIL DPMTSB vssfshbbbrrtbnnb. Pvshuup lfp chhchrpostopus kabdbuenenenen reesenopk dmpdev h zbkme rc.conf (5) , Emuy BDBDBOB LFB Reseteobs, FP RPUME OHPS RTH RTH RETCHPK NOPZPRMPHPCHBFSHULPK Retebzyly vkhdaf BCHPNGFYYUOLY OBBRHEEOB RTPZTBNNB sAVECECORE (8) , BCNR BCHBTKOKOK DBNR SDTB H LBFBM, BDBDIR HT Retenopc Dumbdir ZBKMB RC.Conf. RP Khnpmyba lbfbmpn DMS BCHTKY DBNRPH SCMSEUS / VAR / CRASH.

mIVP CHIST NPSEFF CBDBFS HUFTPKUFPP DMSPUB PVTBBB RBNSFY SCHOPA UTHUAL RBTBNEXT DUPH H UFTPLE CONFIG LPZHTBGPOPPP ZBBKMB CHBESC SDTB. Fblpk urrupv yurpmshpchbshsh oe telpneodhefus na dpmtseo yurpmshpchpchbfbshus, FPMSLP Emuy chist ipfife rpmkhyubshsh btbtykhots pvtbtp rbnsfy sdtb, lpftpp btbtykop bchetefff tbvffh rty obbzth.

Bilješka: DBME fetallo GDB Pedobyubef Pfumbyuil GDB, obrechoesobhe hl` thesin pfambdles sdtb ". Rfpf tecin dpufyzbefus obrkulpn GDB u rbtbnefpn -K. H TecINE PFMBDLY SDTB GDB Yena školske studije o (kgdb).

Savjet: Emum chist yurpmshefe Freebsd chetuy 3 ymi nmea tboaa, chheeyueye pfldpypsp sdtb lpbodpk trake, b oe hufbobchbfsh vsshpe pfldpype sdtp:

# Cp kernel kernel.debug # strip -G kernel

lfpf ibz oe fbl hts opepvipdine, op tvanneodh. (PE FreeBSD 4 J VPMEE RPDOYI TEMYBI FPF YBZ CHSCHRPMOSEFUS BCHFPNBFYYUEULY H LPOGE RTPGEUUB RPUFTPEOYS SDTB napraviti.) LPZDB RAS HUEYUEOP, BCHFPNBFYYUEULY YMY RTY RPNPEY LPNBOD CHSCHYE, BL NPTSEFE HUFBOPCHYFSH EZP PVSCHYUOSCHN PVTBPN, OBVTBCH napraviti instalaciju.

bABEFSHET, YUFP H UFBITSCHI Chetuyi FreeBSD (DP 3.1, OE CHLMAYUBS LFPF Temm), Yurpmshhefus SDTB H ZHPSTNBFE A.OUT, ripfpnh yi fbvmygsk uinchpmpchus rpufsopspc h rbnsfy. Na vpmshiktkin fbvmygegk Uinchpmpc h oe hueyuyopn pfampuopop SDTE LFB ymyyoss ftbfb. RPumedaye Teme FreeBSD Yurpmshhaf SDTB H ZHPTNBFE ELF, ZEA LFP OE SCMSEUS RTVVEMPK.

eUMY BL FEUFYTHEFE OPCHPE RAS, ULBTSEN, OBVYTBS Yns OPCHPZP SDTB RTYZMBYEOYY BZTHYUYLB W, OP CHBN OHTSOP BZTHTSBFSH J TBVPFBFSH imaju DTHZYN SDTPN, YUFPVSCH UOPCHB CHETOHFSHUS A OPTNBMSHOPNH ZHHOLGYPOYTPCHBOYA, BZTHTSBKFE EZP FPMSHLP B PDOPRPMSHPCHBFEMSHULPN TETSYNE RTY RPNPEY ZHMBZB S, HLBSCHCHBENPZP RTY BZTHLE, B OBBFEN KHSHCHPMIFE Flyee SBZY:

# Fsck -p # mount-a-t UFS # tako da vaš datotečni sustav za / var / crash je pisati # SaveCore -N /Kernel.panicked / Var / Crash # Izlaz # ... na više korisnika

bfb rpmedpchbfemshoffs hlbchbff rtpztbnn sAVECECORE (8) O Yurpmshpbe Dthzpzp sdtb DMS Yuchmeyuyuyuyus yehno. Yobyuyk vekdef yurpmshpchbbs sdtp, tbvpfbae h tb npnoph, oyuzp oeall, rpfph ufp btbtkoksk rbnsfy y uinchpmsk sdtb vhdhf pfmyubfsus.

b firth, rpume Utipub btbtykopp dbnrb, retekDife h lbfbmbs / sys / kompil / što god y bromhufyfe lpnbodh GDB -K. Ya rtpztbnch GDB UFP SPF UFP:

Simbol-File kernel.debug exec-file /var/Crash/kernel.0 core-file /var/fhash/vmcore.0 TH CHBMS - CHIST NPSEF PFMBCYCHBFS BTBTKOM DBNR, Yurpmshs Yuipdocke FPUFSHS SDTB FPUOP FBBEFE, LLBK RTTPZTBNPKK.

cHPF TSKTOBM LPNBO OBEBUB TBVPFSH GDB, YMMAUFTHAKEK BFHGEDCHT. DMYO-VOSHPLY VSHMY TBPTCHBS DMSHHYUYUS YUFBEMSHOPUFY DMSU DMS HDPVUFCH SFFPLY WOLLS RTPOKHNT Ljepila. Chuu pufbmshop scmsefus ftbuyphchlpk poyvly, Tebmshop Chpyulokhchyk CHP žlice tbvpfshd dtbchpn lpopmy pcvt.

1: Skripta je počela na pet od prosinca 30 23:15:22 1994 2: # CD / Sys / Komiler / Uria 3: # GDB -K KENEL /VAR/Crash/vmcore.1 4: Čitanje podataka o simbolu iz / usr / SRC / Sys / kompil / Uriah / kernel ... učinjeno. 5: IdleptD 1f3000 6: Panic: Zato što ste rekli! 7: Trenutni PCB na 1E3F70 8: Čitanje u simbolima za .././i386/i386/machdep.c...done. 9: (kgdb) gdje 10: # 0 boot (arghowt \u003d 256) (../../i386/i386/machdep.c line 767) 11: # 1 0xf0115159 u paniku () 12: # 2 0xf01955bd u Diediedie ( ) (../../i386/i386/machdep.c line 698) 13: # 3 0xf010185E u db_fncall () 14: # 4 0xf0101586 u db_command (-266509132, -266509516, -267381073) 15: # 5 0xf0101711 u db_command_loop () 16: # 6 0xf01040A0 u db_trap () 17: # 7 0xf0192976 u kdb_trap (12, 0, -272630436, -276743723) 18: # 8 0xf019d2eb u trap_fatal (...) 19: # 9 0xf019ce60 u trap_pfaultu ( ...) 20: # 10 0xf019cb2f u zamku (...) 21: # 11 0xf01932A1 U iznimku: Callap () 22: # 12 0xf0191503 u Cnopenu (...) 23: # 13 0xf0132C34 u SPEC_Open () 24: # 14 0xf012D014 u VN_Open () 25: # 15 0xf012A183 na otvorenom () 26: # 16 0xf019D4EB u Syscall (...) 27: (kgdb) do 10 28: čitanje u simbolima za .././i386/i386 /Trap.c...done. 29: # 10 0xf019cb2f u zamku (okvir \u003d (tf_es \u003d -260440048, TF_DS \u003d 16, TF_ 30: EDI \u003d 3072, TF_ESI \u003d -266445372, tf_ebp \u003d -272630356, tf_ib \u003d -27 \\ t1: 2630396, tf_ebx \u003d - - 266427884, tf_edx \u003d 12, tf_ecx \u003d -266427884, tf) 32: _eax \u003d 64772224, tf_trapno \u003d 12, tf_err \u003d -272695296, tf_eip \u003d -26 33: 6672343, tf_cs \u003d -266469368, tf_flags \u003d 66066, tf_esp \u003d 3072, TF_ 34: SS \u003d -266427884)) (.././i386/i386/trap.c line 283) 35: 283 (void) trap_pfault (i okvir, false); 36: (kgdb) okvir okvir-\u003e tf_ebp okvir-\u003e tf_eip 37: čitanje u simbolima za ../../i386/isa/pcvt/pcvt_drv.c...done. 38: # 0 0xf01ae729 u PCOpenu (dev \u003d 3072, flag \u003d 3, način \u003d 8192, p \u003d (struktur *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c linija 403) 40: 403 povratak ((* linkw.l_open) (dev, tp)); 41: (kgdb) popis 42: 398 43: 399 tp-\u003e t_state | \u003d ts_car_on; 44: 400 TP-\u003e T_cflag | \u003d Plokal; / * Ne može biti modem (:-) * / 45: 401 46: 402 #if pcvt_netbsd || (PCVT_FREEBSD\u003e \u003d 200) 47: 403 Povratak ((* linesw.l_open) (dev, tp)); 48: 404 #Else 49: 405 povratak ((* linesw.l_open) (dev, TP, zastava)); 50: 406 #ENDIF / * PCVT_NETBSD || (PCVT_FREEBSD\u003e \u003d 200) * / 51: 407) 52: (kgdb) Print TP 53: Čitanje u simbolima za ../../i386/i386/cons.c...done. 54: $ 1 \u003d (Struct Tty *) 0x1bae 55: (kgdb) Ispis TP-\u003e T_line 56: $ 2 \u003d 1767990816 57: (kgdb) do 58: # 1 0xf0191503 u CNOPEN (dev \u003d 0x0000000000, flag \u003d 3, način rada \u003d 8192, p \u003d (sv. 59: nacrt Proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126) 60: povratak ((* cdevsw.d_open) (dev, zastava, način rada, p)); 61: (kgdb) do 62: # 2 0xf0132c34 u SPEC_Open () 63: (kgdb) do 64: # 3 0xf012D014 u Vn_open () 65: (kgdb) do 66: # 4 0xf012a183 na otvorenom () 67: (kgdb) Gore 68: # 5 0xf019D4EB u Syscall (okvir \u003d (tf_es \u003d 39, tf_ds \u003d 39, tf_edi \u003d 69: 2158592, tf_esi \u003d 0, tf_ebp \u003d -272638436, tf_sp \u003d -272629788, tf) 70: _ebx \u003d 7086, tf_edx \u003d 1, tf_ecx \u003d 0, tf_eax \u003d 5, tf_trapno \u003d 582, 71: tf_err \u003d 582, tf_eip \u003d 75749, tf_cs \u003d 31, tf_eflags \u003d 582, tf_esp 72: \u003d -272638456, tf_ss \u003d 39)) ( ././i386/i386/trap.c line 673) 73: 673 Error \u003d (* Callp-\u003e Sy_Call) (P, args, rval); 74: (kgdb) do 75: odabrani početni okvir; Ne možete ići gore. 76: (kgdb) Quit 77: # EXIT 78: EXIT 79: 80: Skripta izvršena na pet3 prosinca 30 23:18:04 1994

lpndDefby l chtchtobm:

SFTPLB 6:

lFP DBNR, CHSFHSK RTT RPNPEY DDB (UNPFT OSET), RPPPNH LPNNEFBTYK L BCHBTYKOKOKOKOKOG PUFBOPCH YEF YNEF YNEOOP CHEDE `` jer ste rekli! "" "Ftbuyphchlb Ufelb ZMHVPLB; Pdoldp yebubyubmshopk rtyuyupk reteypdb h ddb linchem btbtkobs pufbopchlb rty spyhophea poyvly uftbugshchy rbnsfy.

SWFLB 20:

lfp trep () h ftbuyphchle Ufelb.

SWFLB 36:

rtyohdifemshope yurpmshptoma ortherch zabugshy ufelb; Ferretsh lfp OE Okhtsop. Rterppzubafus, yufp ztbugshchs ufelb chlbzhchbaf o RTbchimshope tbbrpmseye, dbcu h umkhyubi btbykopp pufbochb. ZBSDS O UFTPLH YUIPDP PDB 403, Npsp Ulbbfsh, yufp Cetpsp ChetpsFop, yufp mivp cheopchbf dpufhr rp hlbbfema `tp" ", myvp vshshpd kba zubugshb nbuychb.

SWFLB 52:

rpipce, yufp cheopchbf hlbbfemsh, op o scmsefus dprhufinshn bdteup.

SFTPLB 56:

pDOBLP, Puehuydop, yufp na chlbchchchubf o nhepta, fbl yufp nsh brofly obly mlinovi! (DMS Fairy, LFP OE TBLPN na LFPK YUBUFSHA LPDB: TP-\u003e T_liline Umkhtsyf DMSO Plotoyois TTSinb lbobbm lpopmshpzp Huftspufbb, th Ifp dpmcop vssfs dpufbfupu nbmoochlup gempa yuyum.)

Kako pokrenuti kernel debugger?

Majstov odgovor:

U procesu razvoja softvera postoji jedna vrlo važna komponenta - to je ispravljanje pogrešaka. U odnosu na aplikacijske programe, ona se provodi pomoću koji radi u korisničkom načinu i često ugrađen u IDE. Da bi mogli odstupati, na primjer, vozač, kernel debugger treba pokrenuti.

Morate pokrenuti procesor CMD naredbe. Otvorite izbornik Start na programskoj traci. U prozoru koji se pojavljuje, kliknite na "Run ...". Pojavljuje se prozor "početni program". U okvir za tekst unesite cmd, a zatim kliknite gumb "OK".

Sada stvorite sigurnosnu kopiju datoteke Boot.ini. Prvo saznajte instalacijsku stazu trenutne kopije sustava Windows pomoću naredbe: Echo% Systemroot%

Zatim idite na disk, s instaliranim operativnim sustavom unosom glasova uređaja, a nakon njih, stavljanjem debelog crijeva. Koristeći CD naredbu, idite u korijenski direktorij. Sada pomoću naredbe atrib, uklonite "skrivene" atribute, "samo za čitanje" i "sustav" iz datoteke Boot.ini. Kopiranje naredbe Kreirajte sigurnosnu kopiju, a zatim postavite atribute na mjesto.

Da biste uklonili popis opcija preuzimanja, koristite zapovijed bootcfg / upit. Pogledajte popis i definirajte tu stavku na temelju kojih će se stvoriti nove postavke s mogućnošću ispravljanja pogrešaka u načinu rada kernela. Treba zapamtiti identifikator za snimanje boot.

Koristite naredbu bootcfg / kopiranje za izradu zapisa o pokretanju. Da biste odredili identifikator snimanja koji ćete kopirati, koristite / id parametar. Pomoću parametra / d postavite naziv snimanja koji će se prikazati. Sada se morate vratiti na popis opcija preuzimanja pomoću naredbe BootCFG / upit i pogledajte dodan identifikator unosa.

Sada trebate omogućiti opcije za pokretanje kernela debuggera na prethodno stvoreni zapis o pokretanju. Ako otkrijete na ciljni stroj, samo trebate dodati opciju / ispravljanje pogrešaka.

Ako želite implementirati daljinsko ispravljanje pogrešaka s povezivanjem ciljnog računala putem COM porta do stroja hosta, koristite opcije / port i / baud za određivanje broja porta i tečaja.

Ako ste daljinski ispravljanje pogrešaka kroz FireWire kabel (IEEE 1394 sučelje), zatim kako biste omogućili odgovarajući način, koristite opciju / dbG1394 i za određivanje opcije broja kanala / CH.

Da biste bili sigurni da su promjene izvršene, provjerite pokretanje pomoću bootcfg naredbe s / upita parametra. Stavljanjem izlazne naredbe zatvorite prozor naredbenog procesora.

Ako je potrebno, promijenite parametre pokretanja operativnog sustava. Otvorite upravljačku ploču putem izbornika Start i otvorite element "System" već u njemu. U prozoru "Svojstva sustava" koja se otvara, odaberite karticu Napredno. Na ovoj kartici odaberite odjeljak s nazivom "Download i Recovery" i kliknite gumb "Parametri". U prozoru "Opterećenje i oporavak", morate aktivirati opciju "Prikaz popisa operacijskih sustava". Zatvorite i dijaloški okvir s "OK".

Izvedite računalo za ponovno pokretanje. Odaberite Učitavanje s debuggerom. Prijavite se na sustav i počnite raditi na ciljnom stroju ili pokrenuti daljinsko ispravljanje pogrešaka. Iskoristite sredstva kao Windbg i KD.

Pristojne nuklearne metode i pod Windowsima su pomalo, a u Linuxu se mogu računati na prstima jedne ruke, a one većinu sirovih, nedovršenih ili napuštenih i mahovina zarasla ... Danas ćemo razgovarati o najpopularnijem i najzanimljivije od njih -
Linije..

Uvod

Kako možete pogoditi po naslovu, Linije. - Ovo je neslužbena "luka" legendarnog
Okvisi pod Linuxom, Spremite sučelje, naredbeni sustav i većinu potonjih značajki: Flames Hot Key (u Linije. ovo je ); Instaliranje hardverskih prekida za sve funkcije i sustavne pozive; Prikaz GDT / LDT / IDT, stranice fizičke memorije; Značajke posuđene iz GDB-a (poziva proizvoljna funkcija poziva, štednju / vraćanje konteksta registara, unutarnjih varijabli itd.).

Za razliku od većine drugih pogrešava koji rade kroz nerefern i lako otkrivene obranom, ptrace mehanizam (od kojih je Windows-analog) Linije. Koristi prirodni trag, isto kao u ovezama, koji omogućuje i debuggerima da ispravi zaštićene programe koje drugi ne nose.

Zapravo, to nije luka (stoga i citate), ali neovisni projekt napisan od nule i koji se proteže u izvoru tekstova bez naknade (od oveza je samo inspiracija). Glavni dio koda, namijenjen za 2,4 jezgre, napisao je njemački hacker goran djevojka, ali potpuno različiti ljudi već su bili angažirani u podršci za jezgru 2,6: Daniel Reznick, Peter K. i Carlos Manuel Duclos Vergara. I naš compatroot - oleg Khudakov - prepisano sastavljanje datoteka s NAM-om i na
GCC.

Izvorni tekstovi leže na službenoj web stranici projekta -
Linice% 0a..com "\u003e www.nicice.com, postoji dokumentacija, kratak broj FAQ i link na forum
Linice% 0a."\u003e Grupe.google.com/group/linice. Nema spremnih binarskih sklopova.
Stvoritelji projekta otvorili su svoj vlastiti račun na Sourceforge, ali su postavljeni da postavljaju sve datoteke na njemu, predstavljajući samo 3 screenshot na pregledu "i vrlo niske kvalitete:
.

Zahtjevi sustava

Najnovija verzija Linije. Nosi broj 2.6 i datira iz 28. lipnja 2005., u potpunosti podržavajući 2.4.x kernel i konzolu VGA mod. Ozbiljni problemi se promatraju s novijim jezgri, a kernel 2.6.x je podržan samo u ograničenom načinu rada.
Debugger je razvijen i testiran pod Debianom 2.6. Njegova kompatibilnost s ostatkom distributera nije zajamčena da nas prisiljava da pribjegne tamburinu, ali u nekim slučajevima ne pomaže i tamburinski. Zapravo zadržati na vašem Debian stroju samo raditi Linije., - to je sasvim normalno. Davno, kada implementacija softvera za NT još nije postojala, mnogi hakeri instalirani pobjeđuju samo 9x samo za razbijanje programa, iako su sami sjedili
NT. Jer pokriva sve suptilnosti instalacije Linije. Unutar jednog članka praktički nije realno, ograničit ću opis procesa kompilacije i lansiranja. Linije. U okviru jednog specifičnog distribucijskog kita - Knoppix 3,7 s 2.4.1 jezgri u načinu VGA konzole.
Linije. Podržava ACPIS i višeprocesorski strojevi, ali to je loše prijateljski s X "MI, osobito na grafičkim karticama, osim Nvidia. 24-bitna dubina boje. To ne percipira," probavlja "samo 8, 16 i 32 bita, tako da debugging x Aplikacije su prikladnije voditi kroz udaljeni terminal spojen putem COM porta na VT100 protokolu. U ovom slučaju, lokalna tipkovnica će također raditi
Linije.!

Kompilacija i konfiguracijska ladice

Preuzmite GZIP arhivu izvornih tekstova www. Linije..devic.us / Linije.-2.6.tar.gz, koji zauzima malo manje od megabajta, raspakirajte ga na disk, idite u direktorij. / Dokumenti i iz datoteke Readme, saznajte da se sklop za debugger pod kernelom 2.4 provodi ovako:

# CD graditi
# ./make_bin-2.4.
# CD ../bin
# Čine čist; Mak.e.

Međutim, prije početka napravite, morate otvoriti datoteku. / Bin-2.4 / makefile i urediti ciljni niz u skladu s konfiguracijom i arhitekturom ciljne platforme. Konkretno, na ACPI strojevima s multi-core ili hipertreading procesora, to će izgledati ovako:

Cilj \u003d -dsmp -io_apic

Nakon završetka kompilacije u imeniku. / Bin će biti mnogo datoteka i direktorija, ali su značajni od njih:

lINSYM je modul za podizanje sustava za debugger;
Linince.dat - konfiguracijska datoteka;
Xice - Podrška X "ov, prilikom rada u tekstualnom načinu rada možete ga izbrisati;
./Linice_2.4.27/line.o - učitani kernel modul koji sadrži samog pogrešaka.

Proces montaže Linije.

Prikupljanjem minimalno radnog kompleta bilo bi lijepo dobiti sve ostalo - Demo Debug primjeri smješteni u direktoriju. / Test i sastavljen od strane kompil skripte, kao i modul za proširenje (po našem mišljenju, pluginu) leži u direktoriju . / EXT prikupljeno od strane naredbe za izradu i preuzeti naredbu u Insadu. Nema koristi od njega, ali, nakon što je proučavao izvornog teksta, moći ćemo napisati vlastite module koji proširuju funkcionalnost
Linije..

Prilikom dizanja Knoppixa "i u donjoj liniji zaslona, \u200b\u200bpojavljuje se poziv" Boot: "gdje trebate unijeti" Knoppix 2 VGA \u003d Normalno ". Cheat Code" Knoppix "odabire 2,4 kernel (automatski učitava prema zadanim postavkama, tako knoppix Može se spustiti), "2" blokira učitavanje x "ov i" VGA \u003d normalno "postavlja standardni VGA način s rezolucijom od 80x25.

Nakon čekanja za preuzimanje, kažu "su", zatim "passwd" i unesite novu lozinku za root "a, pod kojim odmah uđite u sustav, koristeći naredbu za prijavu. Ako to nije učinjeno, pokušaj početka Linije. Završava drobljenjem kvar s krivom "segmentacije greške".

Prilikom preuzimanja Knoppixa "i s tvrdog diska (na koji možete instalirati naredbu" sudo Knoppix-Installer ", postigao je u prozoru terminala s pod nazivom LiveCD sesije), pojavit će se izbornik Start s popisom dostupnih jezgri. Odaberite Linux (2.4) -1 i kliknite Da biste odredili parametre preuzimanja - "2 VGA \u003d Normal". Riječ "Knoppix" ne mora pisati, jer je kernel već izabran. Nakon završetka preuzimanja, mi dajemo naredbu za prijavu i ući u korijenski sustav "ohm (pretpostavlja se da je račun prethodno stvoren).

Lansiranje pogrešaka provodi naredba. / LINSYM-I, nakon čega se odmah pojavljuje na zaslonu. Ako se to ne dogodi, pokušajte odrediti tipku "--verbose 3" za prikaz dijagnostičkih poruka.
Jedan od razloga za neuspjeh preuzimanja može biti nedostatak datoteka /boot/system.map koji sadrži adresu nuklearnih funkcija. Preuzmite ne uspije i ako sadržaj sustava .Map ne odgovara trenutnoj kerneli, koji se može pojaviti, na primjer, tijekom njegovog rekomitiranja. Neki sastavljači distribucija ili ne uključuju sustav .Map uopće (vjerujući da će ojačati sigurnost sustava, budući da će BOOTKIT "AM biti teže presresti Syscall" s), ili se nalazi ovdje nešto što je potpuno ostalo i nerazumljiv od gdje je potrebno. U takvim slučajevima, dovoljno je samo rekompilirati kernel, navodeći put debugger na sistem.Map datoteku pomoću tipke "-m", ako nije u / dizanje, i negdje drugdje. Dakle, sigurnost ne pati i Linije. Može raditi!
Povratak iz pogrešaka u sustav u sustav ili uz pomoć "x "" Kombinacija Uzrokuje ispravljanje pogrešaka iz bilo kojeg programa. Međutim, uopće nije činjenica da se nalazimo u svom kontekstu, jer Linux je multitasking sustav, prebacivanje procesa jedan po jedan, i addr naredbe (prebacivanje konteksta) u leksikonu Linije. još uvijek ne postoji, a kada se pojavi - nepoznato. Stoga je potrebno bolesno, postavljanje zaustavljenih točaka za sustavne pozive koje koristi određeni program, ili provaliti u proces metode int 03h, koju ćemo sada razgovarati.

Za istovar debuggera (ako doista želi istovariti) odgovara na ključ "-X", prenoseći isti LINSYM "Y.

Osnove rada S. Linije.

Za one koji su već radili s ovim ovim, svladavajući Linije. Neće biti problema. Ovdje se koriste sve iste naredbe: D - MEMORY Dump, E - Uređivanje memorije, T - korak-po-korak trag, p - praćenje bez ulaska u funkciju, R - Pregled / modificiranje registara, BPM / BPX - Postavljanje točke zaustavljanja / Izvršenje memorije i sl Kompletan popis naredbi sadržan je u ugrađenoj pomoći koja se zove pomoć (usput, "Name_name pomoći" daje dodatne informacije o timu) iu dokumentaciji osoblja.

Kliknimo I ulazimo u popis procesa prikazanih na zaslonu naredbe Proc, a trenutni proces je istaknut u plavom mjestu:

: Proc.

1 0000 C1C3E000 spavanje 0 0 init
2 0000 F7EE8000 spavanje 0 0 Keventd
3 0000 F7EE2000 spavanje 0 0 KsoftRQD_CPU0
4 0000 F7EE0000 Spavanje 0 0 KsoftQD_CPU1
5 0000 F7ED0000 spavanje 0 0 KSWAPD
6 0000 F7AA000 spavanje 0 0 BDFLUSH
7 0000 F7EA8000 spavanje 0 0 KUPDEDED
56 0000 F6A36000 Spavanje 0 0 Kjournald
1006 0000 F7A34000 trčanje 0 0 Automount
1013 0000 F68E6000 spavanje 0 0 PUPSD
...
1105 0000 F6DDE000 spavanje 0 0 mc
1106 0000 F6DD4000 spavanje 0 0 Cons.Saver

Procesi su, naravno, dobri, ali kako još uvijek debug programe? Najjednostavnija stvar je uključiti se u ulaznu točku CCH stroja, što odgovara int 03H uputama, pred-pisanje sadržaja izvornog bajta. To se može učiniti bilo kojim hex uređivačem, na primjer, više puta spominje.
HTE.

Preuzimanjem datoteke uređivaču kliknite (Način), odaberite ELF / sliku, prilagodite pokazivač na izrazu:, Davim (uredi) i promijenite prvi bajt na CCH, uštedimo promjene u (Spremi) i izađite. Prilikom pokretanja progresivnog programa Linije. odmah se pojavljuje, uznemiren iznimkom generira CCH, nakon čega EIP označava kraj
CCH.

Stanje programa s dugotrajnom ulaznom točkom u vrijeme debuggera

0023: 080482C0 cc int 3
0023: 080482C1 ed u EAX, DX
0023: 080482C2 5e pop es
0023: 080482C3 89E1 MOV ECX, ESP

Pokazivač označava upute u EAX, DX (EDH), koji je fragment iz zakrpanog XOR EBP, EBP (31H EDH) naredbe. Sada (u teoriji), moramo vratiti izvorni bajt promjenom CCH na 31H, smanjiti EIP registar po jedinici i nastaviti praćenje u normalnom načinu rada.

Ali nije bilo ovdje! Linije. - Ovo je, naravno, luka, ali samo vrlo sirovo, i ne zna kako izmijeniti sjećanje na sliku stranice, čak i ako prvo otvorite segment koda za snimanje. Ni e (uređivanje) ni f (punjenje), niti M (kopiranje memorije) ne rade! Ali radi na stogu, a mi, hakeri, to je sasvim dovoljno.

Sjećam se trenutne vrijednosti EIP registra; Kopirajte smetlirani stroj na vrh stog; Vraćemo ccch bajta; Prenosimo kontrolu na njega promjenom vrijednosti EIP-a; Izvodimo ga obavljanjem jednog čina praćenja; I vratiti EIP na mjesto, to jest, na sljedeći stroj:

Restauracija izvornog bajta zamijenjen int 03h instrukcije

; Gledamo na vrh stog (iz čiste znatiželje).
: D ESP-10
0018: BFFFEFC0 C0 82 04 08 00 00 00 00 5D 0C 00 40 DC EF FF BF

; Kopirajte dokazani stroj na vrh stog.
; Broj 10h je maksimalna moguća veličina naredbe stroja na X86.
: M EIP-1 \u200b\u200bL 10 ESP-10

; Gledamo kako se snop promijenio.
: D ESP-10
0018: BFFFEFC0 CC ED 59 E1 83 E4 F0 50 54 52 68 F0 85 04 08

; Da! Stog je stvarno promijenio, vrijeme je da ispravite CCH do 31h.
: E esp-10 31
Uredite trenutne podatke još nisu implementirane.

; Ups! Izravan dodjeljivanje podataka unice se ne provodi,
; Ali možemo urediti izvatku u interaktivni način (također
; kao u ovezima ili dati naredbu F ESP-10 L 1 31, uzeti u obzir samo u obzir
; Što, za razliku od softvera, linijski debugger ne ažurira prozor izlaganja,
; Stoga, nakon izvršavanja naredbe f može to činiti
; nema rezultata; Zapravo, to nije vrijedno ažurirati
; Dump Team d ESP-10, i sve će pasti na svoje mjesto.

; Prenosimo kontrolu na naredbu kopirane na stog,
; Sjećamo se vrijednosti EIP Registra.
: R EIP (ESP-10)
Reg: eip \u003d bfffefc0

; Napraviti jedan čin praćenja.
: T.
0023: BFFFEFC2 5E POP ESI

; Kao što vidimo, EIP Registar se povećao za 2 (BFFFEFC2H - BFFFFEFC0H) \u003d 02h,
; Prema tome, adresa sljedeće naredbe je: 080482C1h - 01H + 02H \u003d 080482C2H,
; Gdje je 080482C1H početna vrijednost EIP-a prilikom ulaska u program, 01H - veličina int 03h.

; Instalirajte EIP na naredbu nakon progresivne upute.
: R eip 80482C2
Reg: EIP \u003d 80482C2

To su plesovi s tamburinom moraju organizirati. I što učiniti? Dakle, uz utovar programa u debuggeru, shvatili smo, sada smo zategnuti od strane točke prijeloma za sustave pozive i nuklearnih funkcija.

COp Command prikazuje imena koja se izvoze u jezgri, od kojih se svaka može pojaviti u izrazima, na primjer, "BPX do_BKR" je ekvivalentan "BPX C012C9E8".

Povlačenje imena izvezenih jezgri

: Exp
zrno
C0320364 mmu_cr4_features.
C02AC3A4 ACPI_DISABED
C02ac8a0 i8253_lock
...
C012bda8 do_mmap_pgoff
C012c764 do_munmap
C012c9e8 do_brka.
C011E990 Exit_mm.
C011E69C Exit_files.

Izazovi sustava činili su se teže. Izravna podrška od Linije. Ovdje ne postoji (ali to bi trebalo biti, s obzirom na specifičnosti Linuxa), tako da morate to učiniti.

Tablica za pozivanje sustava je poznato kao niz dvostrukih riječi počevši od sys_call_table adrese (ova varijabla se izvozi u kernel).

Tablica poziva sustava

; Prijenos debuggera na način prikaza dvostrukih riječi.
: dd.

; Uzmite tablicu na zaslonu.
: d sys_call_table
0018: C02AB6A8 C0126ACC F8932650 F89326A0 C013DC10
0018: C02ab6B8 C013dd18 C013D5C8 C013D724 C011F3BC
0018: C02ab6C8 C013D664 C014A8E0 C014A3B4 F893020C

Svaki element tablice odgovara njegovom pozivu sustava, a svaki poziv ima svoj broj koji se može naći gledanjem u datoteku / datoteku/syscall.h, ali bolje je to učiniti pod Linuxom, gdje nema Izravni brojevi, ali posuđuju da je ista datoteka iz BSD-a je svi isti broj glavnih sustava poziva na sve sustave podudaraju. Konkretno, sustav poziva otvorene propusnice na broju 5.

Da biste postavili točku zaustavljanja na otvoreno, morate znati svoju adresu koja se nalazi u petoj dvostrukoj riječi tablici poziva sustava, brojanje od nule, a jednak (u ovom slučaju) C013D5C8H.

Postavljanje točke zaustavljanja na pozivu otvorenog sustava

; Ugradite točku zaustavljanja na poziv otvorenog sustava,
: BPX C013D5C8.
; izaći iz pogrešaka,
: X.
...
# Otvorite neku datoteku
...
; Debugger se odmah pojavljuje, govoreći nam o tome,
: Prekid pritiska zbog BPX 01

; Neka naredbeni Proc bude siguran da smo zaglavljeni u svoj proces.
: Prox
PID TSS zadatak Država UID GID ime
1049 0000 F6364000 Spavanje 0 0 Getty
1145 0000 F61CC000 spavanje 0 0 mc
1146 0000 F614A000 spavanje 0 0 Cons.Saver

Na taj način je lako ugraditi u već pokrenute procese, postavljanje stop točaka na sustavne pozive koje koriste, kao i mnoge druge stvari koje su od vitalnog značaja za sjeckanje.

Zaključak

Unatoč svojoj iskrenoj vlazi Linije. Sasvim je pogodan za ispravljanje pogrešaka zaštićenih aplikacija, iako se u potpunosti i u blizini moraju pribjeći rješenja zaobilaženja koja se izvode u normalnim debuggerima na stroju. stoga Linije. Ne zamjenjuje GDB, već ga samo nadopunjuje.