Hōʻike ʻia kahi hoʻokuʻu hoʻokolohua o ka DTrace dynamic debugging toolkit no Linux 2.0.0-1.14, i hoʻokō ʻia ma ke ʻano he kaʻina hana hoʻohana-space e hoʻohana ana i ka subsystem eBPF a me nā mīkini tracing maʻamau i hāʻawi ʻia e ka Linux kernel. Ma keʻano o ka hana, ua kokoke ka hoʻokō DTrace eBPF i ka hoʻokō DTrace mua no Linux, i hoʻokō ʻia ma ke ʻano o kahi module kernel. Hāʻawi ʻia ke code papahana ma lalo o ka laikini GPLv2.
Hiki ke hoʻohana ʻia ka pahu hana me nā kernels Linux e kākoʻo ana i ka BPF. No ka hana, pono ʻoe i ka waihona libctf me ka hoʻokō ʻana i ke kākoʻo no ka CTF (Compact Type Format) debug format, i hoʻokomo ʻia i loko o ka pūʻolo binutils e hoʻomaka ana mai ka hoʻokuʻu ʻana 2.40, a i ʻole ka waihona libdtrace-ctf i lawe ʻia mai Solaris. ʻO ke koho, hāʻawi ʻia ʻelua mau ʻāpana no ka kernel 6.7, e ʻae iā ʻoe e hoʻohana i nā hiʻohiʻona kiʻekiʻe e loaʻa ai ka ʻikepili hou e pili ana i nā modules a me ka kernel.
Ua hoʻomohala ʻia ka ʻenehana DTrace e hoʻoponopono i nā pilikia o ka huli ʻana i ka kernel a hoʻopau i nā noi i ka ʻōnaehana hana Solaris. Hāʻawi ʻo DTrace i ka mea hoʻohana i ka hiki ke nānā i ke ʻano o ka ʻōnaehana me ka kikoʻī a ʻike i nā pilikia i ka manawa maoli. I ka wā o ke kaʻina hana debugging, ʻaʻole pili ʻo DTrace i ka hana o nā noi ma lalo o ke aʻo ʻana a ʻaʻole i pili i kā lākou hana, hiki iā ʻoe ke hoʻonohonoho i ka nānā ʻana o nā ʻōnaehana holo ma ka lele. ʻO kekahi o nā ikaika o DTrace ʻo ia ka ʻōlelo D kiʻekiʻe, e like me AWK, kahi i maʻalahi loa ka hana ʻana i nā palapala hōʻailona ma mua o ka hoʻohana ʻana i nā mea hana i hāʻawi ʻia no ke kākau ʻana i nā mea lawelawe eBPF ma C, Python a me Lua me nā hale waihona puke waho.
Nā hiʻohiʻona nui:
- Loaʻa nā mea hoʻolako:
- cpc (CPU Performacne Counter) - loaʻa ka ʻike hana.
- dtrace - BEGIN, END a me ERROR nā mea lawelawe ma mua a ma hope paha o nā loiloi ʻē aʻe, a me ka wā e loaʻa ai nā hewa.
- fbt (Function Boundary Tracing) - ke nānā nei i nā kelepona i nā hana kernel.
- lockstat - ka nānā ʻana i ke kūlana o nā loka.
- pid - Tracks i nā kelepona hana i nā kaʻina hana e holo ana ma kahi o ka mea hoʻohana.
- proc - nānā i nā hana pili i ke kaʻina hana e like me ka hoʻomaka a me ka pani ʻana (fork, exec, exit, fault).
- profile - mālama i nā ʻikepili hana i nā manawa kikoʻī.
- sdt, rawtp - static kernel tracing (SDT - Statically Defined Tracing).
- usdt: ka hoʻopaʻa ʻana i ka noi static (USDT - Userspace Statically Defined Tracing)
- sched - nānā i ka hoʻokaʻawale ʻana i nā kumuwaiwai CPU.
- sycall - Kākoʻo i ke komo ʻana a me ka puka ʻana o nā kelepona ʻōnaehana.
- ʻO ka hōʻuluʻulu o nā ʻikepili i hōʻiliʻili ʻia: ka hiki ke hoʻohana i nā hana aggregate (avg, helu, llquantize, lquantize, max, min, quantize, stddev a sum) a me nā hana aggregate (clear, normalize, normalize, printa). Kākoʻo no ka mālama ʻana i nā hopena o ka hoʻohana ʻana i nā hana aggregate ma nā papa hana maʻamau a hui pū.
- Kākoʻo no ka speculative tracing, kahi e hiki ai iā ʻoe ke nānā i ka ʻikepili ephemerally, e hoʻoholo ana i ka mea o lākou e hopu ʻia i loko o ka trace buffer a pono e hoʻolei ʻia. ʻO nā hana i loaʻa he speculation, speculate, commit and discard.
- Kākoʻo no nā ʻano like ʻole o ka honua a me ka kūloko, TLS (Thread-Local Storage), nā hui hui a me nā kaula.
- Hāʻawi i nā mea hoʻololi i kūkulu ʻia: arg0 - arg9, args [], kelepona, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, probefunc, probemod, probename, probeprov, stackdepth, tid, timestamp, ucaller, uid, uregs [], ustackdepth, walltimestamp.
- Kākoʻo ʻia nā hana: puka, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack and usym.
- Loaʻa nā hana i kūkulu ʻia: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_tohl_type, mutex_type_adaptive , ntohll, ntohs, progenyof, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
- Loaʻa i nā helu helu ʻikepili ʻaʻole i hoʻokomo ʻia i loko o ka trace buffers.
- Kākoʻo no ka hōʻuluʻulu ʻana i nā hōʻailona D tracing i loko o ka palapala papahana BPF.
- Hoʻopili mua i nā hana BPF no nā kelepona waihona.
- Ke koho bpflog e kiʻi i kahi log hōʻoia o nā polokalamu BPF i hoʻouka ʻia.
- Hoʻokumu ʻia nā code Dynamic a me nā code precompilation no ka hoʻohana hou ʻana i nā polokalamu BPF.
Nā hoʻololi i ka mana hou:
- ʻO ka mea hāʻawi pid, i hoʻohana ʻia e nānā i nā kaʻina hana ma kahi o ka mea hoʻohana, ua hoʻohui i ke kākoʻo no ka nānā ʻana i ka hoʻokō ʻana i nā ʻōlelo aʻo e kā lākou offset i ke code.
- Kākoʻo hoʻohui ʻia no ka hoʻohana ʻana i ka hana stack() a me ustack() e hōʻuluʻulu i ka ʻikepili i hōʻiliʻili ʻia.
- ʻO ka hiki ke wehe i nā mea o kēlā me kēia ʻano mai ka hui pū ʻana ma o ka hāʻawi ʻana i ka 0 maoli.
- Hoʻohui ʻia ka hana paʻi no ka hoʻopuka ʻana i ka ʻikepili i kūkulu ʻia me nā ʻano hōʻike.
- Hoʻohui hou i nā hana i kūkulu ʻia cleanpath (), d_path () a me link_ntop ().
- Hoʻohui i ka "-xcpu" parameter, kahi e hiki ai iā ʻoe ke hoʻopaʻa i nā loiloi i nā CPU kikoʻī.
- Hoʻohui ʻia ke koho "-xlockmem" e kaupalena i ka nui o ka hoʻomanaʻo.
- Hāʻawi ʻia ka hiki ke mālama i ka ʻikepili trace kaʻina (USDT) ma waena o ka hoʻomaka hou ʻana o dtprobed.
- Kākoʻo no ka hana BTF (BPF Type Format), e hāʻawi ana i ka ʻike nānā ʻano ma BPF pseudocode.
- Hiki ke hoʻohana i ka palapala hoʻonohonoho e kūkulu.
Source: opennet.ru