{"id":78584,"date":"2024-09-30T22:09:03","date_gmt":"2024-09-30T18:39:03","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/"},"modified":"2024-09-30T22:09:03","modified_gmt":"2024-09-30T18:39:03","slug":"%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/","title":{"rendered":"\u06af\u0633\u062a\u0631\u0634 eBPF Compile \u06cc\u06a9 \u0628\u0627\u0631\u060c \u0627\u062c\u0631\u0627 \u062f\u0631 \u0647\u0645\u0647 \u062c\u0627 (CO-RE) \u0628\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc"},"content":{"rendered":"<p><\/p>\n<div data-article-id=\"2020901\" id=\"article-body\">\n<blockquote>\n<p>\u06cc\u0648\u0634\u0646\u06af <\/p>\n<\/blockquote>\n<p>eBPF\u060c \u0645\u062e\u0641\u0641 Extended Berkeley Packet Filter\u060c \u06cc\u06a9 \u0641\u0646\u0627\u0648\u0631\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0645\u062f\u0631\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc sandboxed \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0634\u0628\u06cc\u0647 \u0645\u0627\u0634\u06cc\u0646 \u0645\u062c\u0627\u0632\u06cc \u062f\u0631 \u0647\u0633\u062a\u0647 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0631\u0627\u0647\u06cc \u0627\u0645\u0646 \u0628\u0631\u0627\u06cc \u06af\u0633\u062a\u0631\u0634 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u0628\u062f\u0648\u0646 \u062e\u0637\u0631 \u0627\u0632 \u06a9\u0627\u0631 \u0627\u0641\u062a\u0627\u062f\u0646 \u0633\u06cc\u0633\u062a\u0645 \u06cc\u0627 \u0628\u0647 \u062e\u0637\u0631 \u0627\u0646\u062f\u0627\u062e\u062a\u0646 \u0627\u0645\u0646\u06cc\u062a \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p>Co-RE \u06a9\u0647 \u0645\u062e\u0641\u0641 \u0639\u0628\u0627\u0631\u062a &#39;Compile Once, Run Everywhere&#39; \u0627\u0633\u062a\u060c \u0628\u0647 \u0645\u0633\u0626\u0644\u0647 \u062d\u06cc\u0627\u062a\u06cc \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u062f\u0631 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0647\u0633\u062a\u0647 \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u062f. \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc eBPF \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u062a\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0647\u0633\u062a\u0647 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u060c \u0633\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0627 eBPF Uprobe\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u062f\u0627\u062e\u0644\u06cc \u0622\u0646\u200c\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c CO-RE \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0637\u0631\u0627\u062d\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 CO-RE \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc eBPF Uprobe \u0628\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u062a\u0639\u062f\u062f \u0633\u0627\u0632\u06af\u0627\u0631 \u0647\u0633\u062a\u0646\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0631\u062f\u06cc\u0627\u0628\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f OpenSSL \u0645\u0641\u06cc\u062f \u0628\u0627\u0634\u062f\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062d\u0641\u0638 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc eBPF \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0633\u062e\u0647 \u063a\u06cc\u0631\u0639\u0645\u0644\u06cc \u0627\u0633\u062a. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0632\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0627\u062c\u0631\u0627 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc eBPF \u0645\u0627\u0646\u0646\u062f bpftime\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f CO-RE \u0631\u0627 \u0628\u0647 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646\u06cc\u060c \u0634\u0628\u06a9\u0647\u200c\u0633\u0627\u0632\u06cc \u0648 \u0648\u0635\u0644\u0647\u200c\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u06cc\u062f \u0648 \u0631\u0627\u0647\u200c\u062d\u0644\u200c\u0647\u0627\u06cc \u0647\u0645\u0647\u200c\u06a9\u0627\u0631\u0647 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0648\u06cc\u0698\u06af\u06cc Co-RE eBPF \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0641\u0631\u0645\u062a \u0646\u0648\u0639 BPF (BTF) \u0628\u0631\u0627\u06cc \u063a\u0644\u0628\u0647 \u0628\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0633\u0646\u062a\u06cc eBPF \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u06a9\u0644\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u062f\u0631 \u0627\u0631\u0627\u0626\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0648\u0639 \u0645\u0634\u0627\u0628\u0647 \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0647\u0633\u062a\u0647 \u0646\u0647\u0641\u062a\u0647 \u0627\u0633\u062a\u060c \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc eBPF \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u062a\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0622\u0645\u0648\u0632\u0634 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 eBPF \u0627\u0633\u062a \u0648 \u0628\u0631\u0627\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc \u062f\u0642\u06cc\u0642 \u062a\u0631\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 https:\/\/eunomia.dev\/tutorials\/ \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. \u06a9\u062f \u0645\u0646\u0628\u0639 \u062f\u0631 https:\/\/github.com\/eunomia-bpf\/bpf-developer-tutorial \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%DA%86%D8%B1%D8%A7_%D8%A8%D9%87_CO-RE_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B1%DB%8C%D9%85%D8%9F\" >\u0686\u0631\u0627 \u0628\u0647 CO-RE \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%D8%B1%D8%A7%D9%87_%D8%AD%D9%84_Co-RE\" >\u0631\u0627\u0647 \u062d\u0644 Co-RE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%DB%8C_Co-RE\" >\u0645\u0632\u0627\u06cc\u0627\u06cc Co-RE<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%D9%85%D8%B4%DA%A9%D9%84_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%81%D8%B6%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86_CO-RE\" >\u0645\u0634\u06a9\u0644: \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 CO-RE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%D8%A8%D8%AF%D9%88%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_BTF_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%81%D8%B6%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C\" >\u0628\u062f\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 BTF \u0628\u0631\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%D8%A7%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_BTF_%D8%A8%D8%B1%D8%A7%DB%8C_Userspace_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 BTF \u0628\u0631\u0627\u06cc Userspace \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/%da%af%d8%b3%d8%aa%d8%b1%d8%b4-ebpf-compile-%db%8c%da%a9-%d8%a8%d8%a7%d8%b1%d8%8c-%d8%a7%d8%ac%d8%b1%d8%a7-%d8%af%d8%b1-%d9%87%d9%85%d9%87-%d8%ac%d8%a7-co-re-%d8%a8%d9%87-%d8%b3%d8%a7%d8%b2%da%af\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%A8%D9%87_CO-RE_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B1%DB%8C%D9%85%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627 \u0628\u0647 CO-RE \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0647\u0633\u062a\u0647<\/strong>: \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0633\u0646\u062a\u06cc eBPF \u0628\u0647 \u0634\u062f\u062a \u0628\u0627 \u0646\u0633\u062e\u0647 \u0647\u0633\u062a\u0647 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u062e\u0627\u0635\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0646\u062f \u0647\u0645\u0631\u0627\u0647 \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u062f\u0627\u062e\u0644\u06cc \u062e\u0627\u0635 \u0648 API\u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u0645\u062a\u06a9\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0646\u062f.<\/li>\n<li>\n<strong>\u0645\u0633\u0627\u0626\u0644 \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644<\/strong>: \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0628\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0637\u0648\u0631 \u0633\u0646\u062a\u06cc \u0628\u0627\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0633\u062e\u0647 \u0647\u0633\u062a\u0647 \u0645\u062c\u062f\u062f\u0627\u064b \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f\u06cc \u062f\u0633\u062a \u0648 \u067e\u0627 \u06af\u06cc\u0631 \u0648 \u0646\u0627\u06a9\u0627\u0631\u0622\u0645\u062f \u0627\u0633\u062a.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%AD%D9%84_Co-RE\"><\/span>\n<p>  \u0631\u0627\u0647 \u062d\u0644 Co-RE<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<strong>\u0627\u0646\u062a\u0632\u0627\u0639 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0647\u0633\u062a\u0647<\/strong>: Co-RE \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc eBPF \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u062a\u0627 \u0628\u0627 \u062d\u0630\u0641 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 \u0647\u0633\u062a\u0647 \u0642\u0627\u0628\u0644 \u062d\u0645\u0644\u200c\u062a\u0631 \u0628\u0627\u0634\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0631\u0645\u062a \u0646\u0648\u0639 BPF (BTF) \u0648 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u06cc\u062f.<\/li>\n<li>\n<strong>\u0641\u0631\u0645\u062a \u0646\u0648\u0639 BPF (BTF)<\/strong>: BTF \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u0648\u0639 \u063a\u0646\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0648 \u062a\u0648\u0627\u0628\u0639 \u062f\u0631 \u0647\u0633\u062a\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06cc\u0646 \u0627\u0628\u0631\u062f\u0627\u062f\u0647 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0637\u0631\u062d \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u0646\u062f.<\/li>\n<li>\n<strong>\u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0647\u0627<\/strong>: \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u06a9\u0647 \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc Co-RE \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0646\u062f \u062d\u0627\u0648\u06cc \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062d\u0644 \u0645\u06cc \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0647\u0627 \u0627\u0631\u062c\u0627\u0639\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627 \u0648 \u0639\u0645\u0644\u06a9\u0631\u062f\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0633\u062a\u0647 \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0637\u0631\u062d \u0648 \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0647\u0633\u062a\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%DB%8C_Co-RE\"><\/span>\n<p>  \u0645\u0632\u0627\u06cc\u0627\u06cc Co-RE<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li>\n<strong>\u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0646\u0648\u06cc\u0633\u060c \u0647\u0631 \u062c\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646<\/strong>: \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0628\u0627 Co-RE \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u062c\u062f\u062f \u0628\u0631 \u0631\u0648\u06cc \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0647\u0633\u062a\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u0645\u062a\u0646\u0648\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u06cc\u0645\u0646\u06cc \u0648 \u062b\u0628\u0627\u062a<\/strong>: Co-RE \u062a\u0636\u0645\u06cc\u0646 \u0647\u0627\u06cc \u0627\u06cc\u0645\u0646\u06cc eBPF \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0647\u0633\u062a\u0647 \u0631\u0627 \u062e\u0631\u0627\u0628 \u0646\u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0628\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a\u06cc \u067e\u0627\u06cc\u0628\u0646\u062f \u0646\u06cc\u0633\u062a\u0646\u062f.<\/li>\n<li>\n<strong>\u0633\u0647\u0648\u0644\u062a \u062a\u0648\u0633\u0639\u0647<\/strong>: \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0646\u06af\u0631\u0627\u0646\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0647\u0631 \u0646\u0633\u062e\u0647 \u0647\u0633\u062a\u0647 \u0646\u062f\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u062a\u0648\u0633\u0639\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u0631\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B4%DA%A9%D9%84_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%81%D8%B6%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86_CO-RE\"><\/span>\n<p>  \u0645\u0634\u06a9\u0644: \u0628\u0631\u0646\u0627\u0645\u0647 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 CO-RE<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>eBPF \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u062f\u06cc\u0627\u0628\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. Uprobe \u06cc\u06a9 \u06a9\u0627\u0648\u0634\u06af\u0631 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0628\u0632\u0627\u0631 \u062f\u0642\u06cc\u0642 \u067e\u0648\u06cc\u0627 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u0645\u06a9\u0627\u0646 \u0647\u0627\u06cc \u06a9\u0627\u0648\u0634\u06af\u0631 \u0634\u0627\u0645\u0644 \u0648\u0631\u0648\u062f \u062a\u0627\u0628\u0639\u060c \u0627\u0641\u0633\u062a \u0647\u0627\u06cc \u062e\u0627\u0635 \u0648 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u062a\u0627\u0628\u0639 \u0645\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<p>BTF \u0628\u0631\u0627\u06cc \u0647\u0633\u062a\u0647 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0648 \u0627\u0632 vmlinux \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u062a\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0628\u0627 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u06a9\u0631\u0646\u0644 \u0633\u0627\u0632\u06af\u0627\u0631 \u0634\u0648\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u06cc\u0632 \u0628\u0647 CO-RE \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c SSL\/TLS uprobe \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0632 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 userspace \u0645\u0627\u0646\u0646\u062f OpenSSL\u060c GnuTLS\u060c NSS \u0648 \u063a\u06cc\u0631\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0646\u06cc\u0632 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u062f\u0627\u0631\u0646\u062f\u060c \u0627\u06af\u0631 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0633\u062e\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06af\u0631 CO-RE \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0641\u0639\u0627\u0644 \u0646\u0634\u0648\u062f\u060c \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc\u200c\u0627\u0641\u062a\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 BTF \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u062d\u0644 \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%AF%D9%88%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_BTF_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%81%D8%B6%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C\"><\/span>\n<p>  \u0628\u062f\u0648\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 BTF \u0628\u0631\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0633\u0627\u062f\u0647 uprobe \u0627\u0633\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u0627\u0628\u0639 \u0648 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0636\u0628\u0637 \u06a9\u0646\u062f <code>add_test<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 userspace \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>#define BPF_NO_PRESERVE_ACCESS_INDEX<\/code> \u062f\u0631 <code>uprobe.bpf.c<\/code> \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u062f\u0648\u0646 BTF \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0631\u062f <code>struct data<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"cp\">#define BPF_NO_GLOBAL_DATA\n#define BPF_NO_PRESERVE_ACCESS_INDEX\n#include<\/span> <span class=\"cpf\"><vmlinux.h\/><\/span><span class=\"cp\">\n#include<\/span> <span class=\"cpf\"><bpf\/><\/span><span class=\"cp\">\n#include<\/span> <span class=\"cpf\"><bpf\/><\/span><span class=\"cp\">\n<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">a<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">d<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"n\">SEC<\/span><span class=\"p\">(<\/span><span class=\"s\">\"uprobe\/examples\/btf-base:add_test\"<\/span><span class=\"p\">)<\/span>\n<span class=\"kt\">int<\/span> <span class=\"nf\">BPF_UPROBE<\/span><span class=\"p\">(<\/span><span class=\"n\">add_test<\/span><span class=\"p\">,<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"o\">*<\/span><span class=\"n\">d<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">a<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">bpf_probe_read_user<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">a<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">a<\/span><span class=\"p\">),<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">a<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">bpf_probe_read_user<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">c<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"p\">),<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">c<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">bpf_printk<\/span><span class=\"p\">(<\/span><span class=\"s\">\"add_test(&amp;d) %d + %d = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">a<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span><span class=\"p\">,<\/span>  <span class=\"n\">a<\/span> <span class=\"o\">+<\/span> <span class=\"n\">c<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">a<\/span> <span class=\"o\">+<\/span> <span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">char<\/span> <span class=\"n\">LICENSE<\/span><span class=\"p\">[]<\/span> <span class=\"n\">SEC<\/span><span class=\"p\">(<\/span><span class=\"s\">\"license\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"Dual BSD\/GPL\"<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633\u060c \u0645\u0627 \u062f\u0648 \u0646\u0633\u062e\u0647 \u0645\u062e\u062a\u0644\u0641 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 userspace \u062f\u0627\u0631\u06cc\u0645\u060c <code>examples\/btf-base<\/code> \u0648 <code>examples\/btf-base-new<\/code>. \u0633\u0627\u062e\u062a\u0627\u0631 <code>data<\/code> \u062f\u0631 \u062f\u0648 \u0646\u0633\u062e\u0647 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a.<\/p>\n<p><code>examples\/btf-base<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"c1\">\/\/ use a different struct<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">a<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">d<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kt\">int<\/span> <span class=\"nf\">add_test<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"o\">*<\/span><span class=\"n\">d<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">a<\/span> <span class=\"o\">+<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">argc<\/span><span class=\"p\">,<\/span> <span class=\"kt\">char<\/span> <span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"n\">d<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">4<\/span><span class=\"p\">};<\/span>\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"add_test(&amp;d) = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">add_test<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">d<\/span><span class=\"p\">));<\/span>\n    <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><code>examples\/btf-base-new<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">a<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">b<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">d<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kt\">int<\/span> <span class=\"nf\">add_test<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"o\">*<\/span><span class=\"n\">d<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">a<\/span> <span class=\"o\">+<\/span> <span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">argc<\/span><span class=\"p\">,<\/span> <span class=\"kt\">char<\/span> <span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"n\">d<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">4<\/span><span class=\"p\">};<\/span>\n    <span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"add_test(&amp;d) = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">add_test<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">d<\/span><span class=\"p\">));<\/span>\n    <span class=\"k\">return<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 pahole \u0648 clang \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f btf \u0628\u0631\u0627\u06cc \u0647\u0631 \u0646\u0633\u062e\u0647 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0627\u0628\u0632\u0627\u0631 pahole \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f BTF \u0631\u0627 \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u062f: https:\/\/linux.die.net\/man\/1\/pahole<\/p>\n<p>\u0645\u062b\u0627\u0644 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 btf \u0628\u0631\u0627\u06cc \u0622\u0646\u0647\u0627 \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>make <span class=\"nt\">-C<\/span> example <span class=\"c\"># it's like: pahole --btf_encode_detached base.btf btf-base.o<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0631\u0627 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 userspace \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc <code>btf-base<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo<\/span> .\/uprobe examples\/btf-base \n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 userspace:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span>examples\/btf-base\n<span class=\"go\">add_test(&amp;d) = 4\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span><span class=\"nb\">sudo cat<\/span> \/sys\/kernel\/debug\/tracing\/trace_pipe<span class=\"se\">\\<\/span>\n<span class=\"gp\">           &lt;...&gt;<\/span><span class=\"nt\">-25458<\/span>   <span class=\"o\">[<\/span>000] ...11 27694.081465: bpf_trace_printk: add_test<span class=\"o\">(<\/span>&amp;d<span class=\"o\">)<\/span> 1 + 3 <span class=\"o\">=<\/span> 4\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc <code>btf-base-new<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">sudo<\/span> .\/uprobe examples\/btf-base-new\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 userspace:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span>examples\/btf-base-new\n<span class=\"go\">add_test(&amp;d) = 4\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span><span class=\"nb\">sudo cat<\/span> \/sys\/kernel\/debug\/tracing\/trace_pipe<span class=\"se\">\\<\/span>\n<span class=\"gp\">           &lt;...&gt;<\/span><span class=\"nt\">-25809<\/span>   <span class=\"o\">[<\/span>001] ...11 27828.314224: bpf_trace_printk: add_test<span class=\"o\">(<\/span>&amp;d<span class=\"o\">)<\/span> 1 + 2 <span class=\"o\">=<\/span> 3\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 <code>data<\/code> \u062f\u0631 \u062f\u0648 \u0646\u0633\u062e\u0647 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a. \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 userspace \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0635\u062d\u06cc\u062d \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_BTF_%D8%A8%D8%B1%D8%A7%DB%8C_Userspace_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 BTF \u0628\u0631\u0627\u06cc Userspace \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0646\u0638\u0631 \u062f\u0647\u06cc\u062f <code>#define BPF_NO_PRESERVE_ACCESS_INDEX<\/code> \u062f\u0631 <code>uprobe.bpf.c<\/code> \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 BTF \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0631\u062f <code>struct data<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code><span class=\"cp\">#define BPF_NO_GLOBAL_DATA\n<\/span><span class=\"c1\">\/\/ #define BPF_NO_PRESERVE_ACCESS_INDEX<\/span>\n<span class=\"cp\">#include<\/span> <span class=\"cpf\"><vmlinux.h\/><\/span><span class=\"cp\">\n#include<\/span> <span class=\"cpf\"><bpf\/><\/span><span class=\"cp\">\n#include<\/span> <span class=\"cpf\"><bpf\/><\/span><span class=\"cp\">\n<\/span>\n<span class=\"cp\">#ifndef BPF_NO_PRESERVE_ACCESS_INDEX\n#pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record)\n#endif\n<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">a<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">d<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"cp\">#ifndef BPF_NO_PRESERVE_ACCESS_INDEX\n#pragma clang attribute pop\n#endif\n<\/span>\n\n<span class=\"n\">SEC<\/span><span class=\"p\">(<\/span><span class=\"s\">\"uprobe\/examples\/btf-base:add_test\"<\/span><span class=\"p\">)<\/span>\n<span class=\"kt\">int<\/span> <span class=\"nf\">BPF_UPROBE<\/span><span class=\"p\">(<\/span><span class=\"n\">add_test<\/span><span class=\"p\">,<\/span> <span class=\"k\">struct<\/span> <span class=\"n\">data<\/span> <span class=\"o\">*<\/span><span class=\"n\">d<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">a<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">bpf_probe_read_user<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">a<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">a<\/span><span class=\"p\">),<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">a<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">bpf_probe_read_user<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">c<\/span><span class=\"p\">,<\/span> <span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"p\">),<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">d<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">c<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">bpf_printk<\/span><span class=\"p\">(<\/span><span class=\"s\">\"add_test(&amp;d) %d + %d = %d<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">a<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span><span class=\"p\">,<\/span>  <span class=\"n\">a<\/span> <span class=\"o\">+<\/span> <span class=\"n\">c<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">a<\/span> <span class=\"o\">+<\/span> <span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">char<\/span> <span class=\"n\">LICENSE<\/span><span class=\"p\">[]<\/span> <span class=\"n\">SEC<\/span><span class=\"p\">(<\/span><span class=\"s\">\"license\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"Dual BSD\/GPL\"<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u06a9\u0648\u0631\u062f \u0627\u0632 <code>struct data<\/code> \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u062d\u0641\u0638 \u0645\u06cc \u0634\u0648\u062f. \u0633\u067e\u0633\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>btf-base.btf<\/code> \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF.<\/p>\n<p>\u06a9\u0627\u0631\u0628\u0631 btf \u0631\u0627 \u0628\u0627 \u06a9\u0631\u0646\u0644 btf \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u06cc\u06a9 btf \u06a9\u0627\u0645\u0644 \u0628\u0631\u0627\u06cc \u0647\u0633\u062a\u0647 \u0648 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>.\/merge-btf \/sys\/kernel\/btf\/vmlinux examples\/base.btf target-base.btf\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 eBPF \u0631\u0627 \u0628\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 userspace \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc <code>btf-base<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span><span class=\"nb\">sudo<\/span> .\/uprobe examples\/btf-base target-base.btf\n<span class=\"c\">...\n<\/span><span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>1: patched insn <span class=\"c\">#4 (ALU\/ALU64) imm 0 -&gt; 0<\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>2: <byte_off> <span class=\"o\">[<\/span>7] struct data.c <span class=\"o\">(<\/span>0:1 @ offset 4<span class=\"o\">)<\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>2: matching candidate <span class=\"c\">#0 <byte_off> [133110] struct data.c (0:1 @ offset 4)<\/byte_off><\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>2: patched insn <span class=\"c\">#11 (ALU\/ALU64) imm 4 -&gt; 4<\/span>\n<span class=\"c\">...\n<\/span><\/byte_off><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647 userspace \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span><span class=\"nb\">sudo cat<\/span> \/sys\/kernel\/debug\/tracing\/trace_pipe\n<span class=\"go\">[sudo] password for yunwei37: \n<\/span><span class=\"gp\">           &lt;...&gt;<\/span><span class=\"nt\">-26740<\/span>   <span class=\"o\">[<\/span>001] ...11 28180.156220: bpf_trace_printk: add_test<span class=\"o\">(<\/span>&amp;d<span class=\"o\">)<\/span> 1 + 3 <span class=\"o\">=<\/span> 4\n<span class=\"go\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0645\u0627 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0633\u062e\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 userspace \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645 <code>btf-base-new<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span>.\/merge-btf \/sys\/kernel\/btf\/vmlinux examples\/base-new.btf target-base-new.btf\n<span class=\"gp\">$<\/span><span class=\"w\"> <\/span><span class=\"nb\">sudo<\/span> .\/uprobe examples\/btf-base-new target-base-new.btf\n<span class=\"c\">....\n<\/span><span class=\"go\">libbpf: sec 'uprobe\/examples\/btf-base:add_test': found 3 CO-RE relocations\nlibbpf: CO-RE relocating [2] struct pt_regs: found target candidate [357] struct pt_regs in [vmlinux]\n<\/span><span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>0: <byte_off> <span class=\"o\">[<\/span>2] struct pt_regs.di <span class=\"o\">(<\/span>0:14 @ offset 112<span class=\"o\">)<\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>0: matching candidate <span class=\"c\">#0 <byte_off> [357] struct pt_regs.di (0:14 @ offset 112)<\/byte_off><\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>0: patched insn <span class=\"c\">#0 (LDX\/ST\/STX) off 112 -&gt; 112<\/span>\n<span class=\"go\">libbpf: CO-RE relocating [7] struct data: found target candidate [133110] struct data in [vmlinux]\n<\/span><span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>1: <byte_off> <span class=\"o\">[<\/span>7] struct data.a <span class=\"o\">(<\/span>0:0 @ offset 0<span class=\"o\">)<\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>1: matching candidate <span class=\"c\">#0 <byte_off> [133110] struct data.a (0:0 @ offset 0)<\/byte_off><\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>1: patched insn <span class=\"c\">#4 (ALU\/ALU64) imm 0 -&gt; 0<\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>2: <byte_off> <span class=\"o\">[<\/span>7] struct data.c <span class=\"o\">(<\/span>0:1 @ offset 4<span class=\"o\">)<\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>2: matching candidate <span class=\"c\">#0 <byte_off> [133110] struct data.c (0:2 @ offset 8)<\/byte_off><\/span>\n<span class=\"gp\">libbpf: prog 'add_test': relo #<\/span>2: patched insn <span class=\"c\">#11 (ALU\/ALU64) imm 4 -&gt; 8<\/span>\n<span class=\"go\">libbpf: elf: symbol address match for 'add_test' in 'examples\/btf-base-new': 0x1140\nSuccessfully started! Press Ctrl+C to stop.\n<\/span><\/byte_off><\/byte_off><\/byte_off><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u062f\u0631\u0633\u062a \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight console\"><code><span class=\"gp\">$<\/span><span class=\"w\"> <\/span><span class=\"nb\">sudo cat<\/span> \/sys\/kernel\/debug\/tracing\/trace_pipe\n<span class=\"go\">[sudo] password for yunwei37: \n<\/span><span class=\"gp\">           &lt;...&gt;<\/span><span class=\"nt\">-26740<\/span>   <span class=\"o\">[<\/span>001] ...11 28180.156220: bpf_trace_printk: add_test<span class=\"o\">(<\/span>&amp;d<span class=\"o\">)<\/span> 1 + 3 <span class=\"o\">=<\/span> 4\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0627\u0645\u0644\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 https:\/\/github.com\/eunomia-bpf\/bpf-developer-tutorial\/tree\/main\/src\/38-btf-uprobe \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u062f\u06cc\u0627\u0628\u06cc uprobe eBPF \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0628\u0647 \u0647\u06cc\u0686 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u062f. \u0645\u0627 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f BTF \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0627\u0641\u0633\u062a \u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u062f \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 CO-RE \u062f\u0631 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0647\u0633\u062a\u0647 \u0628\u062f\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a BTF \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight c\"><code>    <span class=\"n\">LIBBPF_OPTS<\/span><span class=\"p\">(<\/span><span class=\"n\">bpf_object_open_opts<\/span> <span class=\"p\">,<\/span> <span class=\"n\">opts<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">);<\/span>\n    <span class=\"n\">LIBBPF_OPTS<\/span><span class=\"p\">(<\/span><span class=\"n\">bpf_uprobe_opts<\/span><span class=\"p\">,<\/span> <span class=\"n\">uprobe_opts<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">argc<\/span> <span class=\"o\">!=<\/span> <span class=\"mi\">3<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">argc<\/span> <span class=\"o\">!=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">fprintf<\/span><span class=\"p\">(<\/span><span class=\"n\">stderr<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Usage: %s <example-name> [<external-btf>]<\/external-btf><\/example-name><\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]);<\/span>\n        <span class=\"k\">return<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"n\">argc<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">3<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">opts<\/span><span class=\"p\">.<\/span><span class=\"n\">btf_custom_path<\/span> <span class=\"o\">=<\/span> <span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">];<\/span>\n\n    <span class=\"cm\">\/* Set up libbpf errors and debug info callback *\/<\/span>\n    <span class=\"n\">libbpf_set_print<\/span><span class=\"p\">(<\/span><span class=\"n\">libbpf_print_fn<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"cm\">\/* Cleaner handling of Ctrl-C *\/<\/span>\n    <span class=\"n\">signal<\/span><span class=\"p\">(<\/span><span class=\"n\">SIGINT<\/span><span class=\"p\">,<\/span> <span class=\"n\">sig_handler<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">signal<\/span><span class=\"p\">(<\/span><span class=\"n\">SIGTERM<\/span><span class=\"p\">,<\/span> <span class=\"n\">sig_handler<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"cm\">\/* Load and verify BPF application *\/<\/span>\n    <span class=\"n\">skel<\/span> <span class=\"o\">=<\/span> <span class=\"n\">uprobe_bpf__open_opts<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">opts<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"n\">skel<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">fprintf<\/span><span class=\"p\">(<\/span><span class=\"n\">stderr<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Failed to open and load BPF skeleton<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">return<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0627\u062c\u0631\u0627\u06cc BTF \u0628\u0631\u0627\u06cc \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0628\u0647 \u062f\u0648 \u0628\u062e\u0634 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f: \u0627\u0637\u0644\u0627\u0639\u0627\u062a BTF \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 BPF \u062d\u0645\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a BTF \u0647\u0633\u062a\u0647 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 eBPF. \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 eBPF\u060c libbpf \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0646\u0627\u062f\u0631\u0633\u062a eBPF \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0642\u06cc\u0642 BTF \u0647\u0633\u062a\u0647 \u0641\u0639\u0644\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0627\u0632 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0647\u0633\u062a\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u062c\u0627\u0644\u0628 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 libbpf \u062a\u0641\u0627\u0648\u062a\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a BTF \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u06cc\u0627 \u0647\u0633\u062a\u0647 \u0645\u06cc\u200c\u0622\u06cc\u0646\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627 \u0627\u062f\u063a\u0627\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a BTF \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0628\u0627 \u0647\u0633\u062a\u0647 BTF \u0648 \u0627\u0631\u0627\u0626\u0647 \u0622\u0646\u0647\u0627 \u0628\u0647 libbpf \u0645\u0634\u06a9\u0644 \u062d\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0648 \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 (\u0645\u0627\u0646\u0646\u062f libbpf) \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f\u060c \u0647\u0645 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0647 eBPF \u0648 \u0647\u0645 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 eBPF \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 (\u0645\u0627\u0646\u0646\u062f bpftime) \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 CO-RE \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u0646\u062f. bpftime (https:\/\/github.com\/eunomia-bpf\/bpftime) \u06cc\u06a9 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 eBPF \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 LLVM JIT\/AOT \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u0631\u0627 \u062f\u0631 \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 \u0647\u0633\u062a\u0647-\u0641\u0636\u0627\u06cc eBPF \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u0632 uprobes\u060c syscall trace \u0648 \u0627\u0641\u0632\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u06a9\u0644\u06cc \u067e\u0644\u0627\u06af\u06cc\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0632 \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc \u0632\u0645\u06cc\u0646\u0647 \u0628\u06cc\u0646 \u0647\u0633\u062a\u0647 \u0648 \u0641\u0636\u0627\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc uprobe \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 libbpf \u0648 BTF\u060c bpftime \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u06af\u0633\u062a\u0631\u0634 \u062f\u0647\u062f \u0648 \u0628\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0633\u062a \u06cc\u0627\u0628\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u062c\u0627\u0628\u062c\u0627\u06cc\u06cc BTF\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 https:\/\/nakryiko.com\/posts\/bpf-core-reference-guide\/ \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\n<strong>\u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc<\/strong>: \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 BTF \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc eBPF \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u060c \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/li>\n<li>\n<strong>\u06a9\u0627\u0647\u0634 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc<\/strong>: \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0647 \u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc eBPF \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f\u060c \u0632\u06cc\u0631\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0633\u062e\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0645\u062a\u0639\u062f\u062f \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f.<\/li>\n<li>\n<strong>\u067e\u062a\u0627\u0646\u0633\u06cc\u0644 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f \u06af\u0633\u062a\u0631\u062f\u0647 \u062a\u0631<\/strong>: \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u062b\u0627\u0644 \u0634\u0645\u0627 \u0628\u0631 \u0646\u0638\u0627\u0631\u062a SSL\/TLS \u0645\u062a\u0645\u0631\u06a9\u0632 \u0627\u0633\u062a\u060c \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc \u06af\u0633\u062a\u0631\u062f\u0647 \u062a\u0631\u06cc \u062f\u0631 \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f\u060c \u0627\u0645\u0646\u06cc\u062a \u0648 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n<p>\u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u067e\u06cc\u0634\u0631\u0641\u062a \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0631\u0628\u0631\u062f \u0639\u0645\u0644\u06cc eBPF \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u067e\u0648\u06cc\u0627\u062a\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0641\u0636\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0645\u062d\u06cc\u0637 \u0644\u06cc\u0646\u0648\u06a9\u0633 \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0642\u0627\u0646\u0639 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u0648 \u0645\u062f\u06cc\u0631\u0627\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0647\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0645\u062f\u0631\u0646 \u0633\u0631 \u0648 \u06a9\u0627\u0631 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u0628\u0627\u0631\u0647 \u062f\u0627\u0646\u0634 \u0648 \u0634\u06cc\u0648\u0647\u200c\u0647\u0627\u06cc eBPF \u0628\u06cc\u0634\u062a\u0631 \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0645\u062e\u0632\u0646 \u06a9\u062f \u0622\u0645\u0648\u0632\u0634\u06cc \u0645\u0627 https:\/\/github.com\/eunomia-bpf\/bpf-developer-tutorial \u06cc\u0627 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a https:\/\/eunomia.dev\/tutorials\/ \u062f\u06cc\u062f\u0646 \u06a9\u0646\u06cc\u062f. \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0648 \u0622\u0645\u0648\u0632\u0634 \u0647\u0627\u06cc \u06a9\u0627\u0645\u0644<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u06cc\u0648\u0634\u0646\u06af eBPF\u060c \u0645\u062e\u0641\u0641 Extended Berkeley Packet Filter\u060c \u06cc\u06a9 \u0641\u0646\u0627\u0648\u0631\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633 \u0645\u062f\u0631\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc sandboxed \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637\u06cc \u0634\u0628\u06cc\u0647 \u0645\u0627\u0634\u06cc\u0646 \u0645\u062c\u0627\u0632\u06cc \u062f\u0631 \u0647\u0633\u062a\u0647 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0631\u0627\u0647\u06cc \u0627\u0645\u0646 \u0628\u0631\u0627\u06cc \u06af\u0633\u062a\u0631\u0634 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u0647\u0633\u062a\u0647 \u0628\u062f\u0648\u0646 \u062e\u0637\u0631 \u0627\u0632 \u06a9\u0627\u0631 \u0627\u0641\u062a\u0627\u062f\u0646 \u0633\u06cc\u0633\u062a\u0645 \u06cc\u0627 \u0628\u0647 \u062e\u0637\u0631 \u0627\u0646\u062f\u0627\u062e\u062a\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":78585,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/dev.to\/social_previews\/article\/2020901.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-78584","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=78584"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/78584\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/78585"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=78584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=78584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=78584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}