Ukukhishwa kokuhlola kwe-DTrace dynamic debugging toolkit kwethulwe ukuze Linux 2.0.0-1.14, esetshenziswe njengenqubo yesikhala somsebenzisi kusetshenziswa uhlelo olungaphansi lwe-eBPF kanye nezindlela zokulandelela ezijwayelekile ezinikezwa yi-kernel LinuxNgokuphathelene nokusebenza, ukusetshenziswa kwe-DTrace okusekelwe ku-eBPF kuseduze nokusetshenziswa kokuqala kwe-DTrace kwe- Linux, isetshenziswa njengemojuli ye-kernel. Ikhodi yephrojekthi isatshalaliswa ngaphansi kwelayisensi ye-GPLv2.
Ithuluzi lingasetshenziswa ngama-kernel ajwayelekile Linux, esekela i-BPF. Lokhu kudinga umtapo wolwazi we-libctf, osebenzisa ukusekelwa kwefomethi yokulungisa iphutha ye-CTF (Compact Type Format), efakiwe kuphakheji ye-binutils kusukela ekukhishweni kwe-2.40, noma umtapo wolwazi we-libdtrace-ctf, othuthwe kusuka ku-Solaris. Ama-patches amabili e-kernel engu-6.7 ayatholakala ngokuzikhethela, okwenza kube nokwenzeka amakhono athuthukile okuthola idatha eyengeziwe mayelana namamojula kanye ne-kernel.
Ubuchwepheshe be-DTrace bathuthukiswa ukuze kuxazululwe izinkinga zokulandela ngomkhondo i-kernel kanye nokuqeda izinhlelo zokusebenza ohlelweni lokusebenza lwe-Solaris. I-DTrace inika umsebenzisi amandla okuqapha ukuziphatha kwesistimu ngokuningiliziwe nokuxilonga izinkinga ngesikhathi sangempela. Ngesikhathi senqubo yokulungisa iphutha, i-DTrace ayithinti ukusebenza kwezinhlelo zokusebenza ezisacwaningwayo futhi ayithinti nganoma iyiphi indlela ukusebenza kwazo, okukuvumela ukuthi uhlele ukuhlaziya amasistimu asebenzayo ngokuhamba kwesikhathi. Enye yamandla e-DTrace ulimi lwezinga eliphezulu lwe-D, olufana ne-AWK, lapho kulula kakhulu ukudala izikripthi zokulandelela kunokusebenzisa amathuluzi anikezwa i-eBPF okubhala izibambi ku-C, Python kanye ne-Lua enemitapo yolwazi yangaphandle.
Izici ezibalulekile:
- Abahlinzeki abatholakalayo:
- cpc (CPU Performacne Counter) - ukuthola ulwazi lokusebenza.
- dtrace - BEGIN, END kanye nezibambi ze-ERROR zisebenza ngaphambi noma ngemva kokunye ukuhlola, kanye nalapho kwenzeka amaphutha.
- fbt (Function Boundary Tracing) - ukulandelela izingcingo emisebenzini ye-kernel.
- i-lockstat - ukulandelela isimo sezingidi.
- pid - Ilandelela izingcingo zomsebenzi ezinqubweni ezisebenza endaweni yomsebenzisi.
- I-proc - iqapha umsebenzi ohlobene nenqubo njengokuqalisa nokuvala shaqa (imfoloko, khipha, phuma, iphutha).
- iphrofayili - ilondoloza izibalo zokusebenza ngezikhathi ezithile.
- sdt, rawtp - static kernel tracing (SDT - Statically Defined Tracing).
- i-usdt: ukulandelela uhlelo lokusebenza okumile (i-USDT - I-Userspace Defined Tracing)
- ishejuli - iqapha ukwabiwa kwezinsiza ze-CPU.
- sycall - Ilandelela ukungena nokuphuma kwezingcingo zesistimu.
- Ukuhlanganiswa kwedatha eqoqiwe: ikhono lokusebenzisa imisebenzi ehlanganisiwe (isilinganiso, ukubala, llquantize, lquantize, max, min, quantize, stddev kanye nesamba) kanye nezenzo ezihlanganisayo (sula, yenza kujwayelekile, kujwayelekile, printa). Ukusekela kokugcina imiphumela yokusebenzisa imisebenzi ehlanganisiwe kumalungu afanayo avamile nahlangene.
- Ukusekela ukulandelela okucatshangelwayo, okukuvumela ukuthi uqaphe idatha ngokwedlulele, unqume ukuthi iyiphi kuzo okufanele ibanjwe ku-trace buffer nokuthi yikuphi okufanele ilahlwe. Imisebenzi ekhona iwukuqagela, ukuqagela, ukuzibophezela nokulahla.
- Ukusekela okuguquguqukayo komhlaba jikelele nokwasendaweni, i-TLS (Isitoreji Sendawo Yochungechunge), ama-associative arrays namayunithi ezinhlamvu.
- Ihlinzeka ngezinto ezakhelwe ngaphakathi: arg0 - arg9, args[], ofonayo, i-curcpu, i-curthread, i-epid, i-errno, i-execname, i-gid, i-id, i-pid, i-ppid, i-probefunc, i-probemod, i-probename, i-probeprov, i-stackdepth, i-tid, isitembu sesikhathi, ucaller uid, uregs[], ustackdepth, walltimestamp.
- Izenzo ezisekelwayo: phuma, vula, ftruncate, mod, printa, printf, phakamisa, setopt, stack, sym, isistimu, trace, tracemem, uaddr, umod, ustack kanye usym.
- Ukutholakala kwemisebenzi eyakhelwe ngaphakathi: i-alloca, i-basename, i-bcopy, ikhophi, ikhophi, ikhophi, ikhophi, i-copyoutstr, i-dirname, i-getmajor, i-getminor, i-htonl, i-htonll, i-htons, inkomba, inet_ntoa, i-lltostr, i-mutex_owned, mutex_owner_spinada_hl , ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
- Ukuba khona kwezibali zedatha ezingafakiwe kumabhafa wokulandela umkhondo.
- Ukusekelwa kokuhlanganisa imibhalo yokulandela umkhondo ka-D ibe ifomu lohlelo lwe-BPF.
- Ukuhlanganisa ngaphambili imisebenzi ye-BPF yezingcingo zelabhulali.
- Inketho ye-bpflog ukuthola ilogi yokuqinisekisa yezinhlelo ze-BPF ezilayishiwe.
- Ukukhiqizwa kwekhodi enamandla kanye nokuhlanganiswa kwekhodi kusengaphambili ukuze kusetshenziswe kabusha ezinhlelweni ze-BPF.
Izinguquko enguqulweni entsha:
- Umhlinzeki we-pid, osetshenziselwa ukulandelela izinqubo endaweni yomsebenzisi, manje usekela ukulandelela ukwenziwa kweziyalezo ngokususa kwazo kukhodi.
- Usekelo olungeziwe lokusebenzisa imisebenzi yesitaki() kanye ne-ustack() ukuze kuhlanganiswe idatha eqoqiwe.
- Ikhono lokususa ama-elementi anoma yiluphi uhlobo kusukela kumalungu afanayo ahlangene ngokunikeza u-0 wangempela.
- Kwengezwe isenzo sokuphrinta ekukhipheni idatha ehlelekile enezichasiselo zohlobo.
- Kwengezwe imisebenzi emisha eyakhelwe ngaphakathi i-cleanpath(), d_path() kanye ne-link_ntop().
- Kwengezwe ipharamitha ethi "-xcpu", ekuvumela ukuthi ubophe amasheke kuma-CPU athile.
- Kwengezwe inketho ethi "-xlockmem" ukukhawulela usayizi wememori.
- Kunikezwe amandla okulondoloza idatha yokulandelela inqubo (i-USDT) phakathi kokuqala kabusha kwe-dtprobed.
- Ukusekela indlela ye-BTF (Ifomethi Yohlobo lwe-BPF), ehlinzeka ngolwazi lokuhlola uhlobo ku-BPF pseudocode.
- Ikhono lokusebenzisa iskripthi sokumisa ukwakha.
Source: opennet.ru
