精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在 Fedora 中用 bpftrace 追蹤代碼

系統 Linux
bpftrace 是一個 基于 eBPF 的新型追蹤工具,在 Fedora 28 第一次引入。這篇文章的內容涉及了 bpftrace 的一些基礎,以及它是如何工作的,請繼續閱讀獲取更多的信息和一些有用的實例。

[[414460]]

bpftrace 是一個 基于 eBPF 的新型追蹤工具,在 Fedora 28 第一次引入。Brendan Gregg、Alastair Robertson 和 Matheus Marchini 在網上的一個松散的黑客團隊的幫助下開發了 bpftrace。它是一個允許你分析系統在幕后正在執行的操作的追蹤工具,可以告訴你代碼中正在被調用的函數、傳遞給函數的參數、函數的調用次數等。

這篇文章的內容涉及了 bpftrace 的一些基礎,以及它是如何工作的,請繼續閱讀獲取更多的信息和一些有用的實例。

eBPF(擴展的伯克利數據包過濾器extended Berkeley Packet Filter

eBPF 是一個微型虛擬機,更確切的說是一個位于 Linux 內核中的虛擬 CPU。eBPF 可以在內核空間以一種安全可控的方式加載和運行小型程序,使得 eBPF 的使用更加安全,即使在生產環境系統中。eBPF 虛擬機有自己的指令集架構(ISA),類似于現代處理器架構的一個子集。通過這個 ISA,可以很容易將 eBPF 程序轉化為真實硬件上的代碼。內核即時將程序轉化為主流處理器架構上的本地代碼,從而提升性能。

eBPF 虛擬機允許通過編程擴展內核,目前已經有一些內核子系統使用這一新型強大的 Linux 內核功能,比如網絡、安全計算、追蹤等。這些子系統的主要思想是添加 eBPF 程序到特定的代碼點,從而擴展原生的內核行為。

雖然 eBPF 機器語言功能強大,由于是一種底層語言,直接用于編寫代碼很費力,bpftrace 就是為了解決這個問題而生的。eBPF 提供了一種編寫 eBPF 追蹤腳本的高級語言,然后在 clang / LLVM 庫的幫助下將這些腳本轉化為 eBPF,最終添加到特定的代碼點。

安裝和快速入門

在終端 使用 sudo 執行下面的命令安裝 bpftrace:

  1. $ sudo dnf install bpftrace

使用“hello world”進行實驗:

  1. $ sudo bpftrace -e 'BEGIN { printf("hello world\n"); }'

注意,出于特權級的需要,你必須使用 root 運行 bpftrace,使用 -e 選項指明一個程序,構建一個所謂的“單行程序”。這個例子只會打印 “hello world”,接著等待你按下 Ctrl+C

BEGIN 是一個特殊的探針名,只在執行一開始生效一次;每次探針命中時,大括號 {} 內的操作(這個例子中只是一個 printf)都會執行。

現在讓我們轉向一個更有用的例子:

  1. $ sudo bpftrace -e 't:syscalls:sys_enter_execve { printf("%s called %s\n", comm, str(args->filename)); }'

這個例子打印了父進程的名字(comm)和系統中正在創建的每個新進程的名稱。t:syscalls:sys_enter_execve 是一個內核追蹤點,是 tracepoint:syscalls:sys_enter_execve 的簡寫,兩種形式都可以使用。下一部分會向你展示如何列出所有可用的追蹤點。

comm 是一個 bpftrace 內建指令,代表進程名;filename 是 t:syscalls:sys_enter_execve 追蹤點的一個字段,這些字段可以通過 args 內建指令訪問。

追蹤點的所有可用字段可以通過這個命令列出:

  1. bpftrace -lv "t:syscalls:sys_enter_execve"

示例用法

列出探針

bpftrace 的一個核心概念是探針點probe point,即 eBPF 程序可以連接到的(內核或用戶空間的)代碼中的測量點,可以分成以下幾大類:

  • kprobe——內核函數的開始處
  • kretprobe——內核函數的返回處
  • uprobe——用戶級函數的開始處
  • uretprobe——用戶級函數的返回處
  • tracepoint——內核靜態追蹤點
  • usdt——用戶級靜態追蹤點
  • profile——基于時間的采樣
  • interval——基于時間的輸出
  • software——內核軟件事件
  • hardware——處理器級事件

所有可用的 kprobe / kretprobetracepointssoftware 和 hardware 探針可以通過這個命令列出:

  1. $ sudo bpftrace -l

uprobe / uretprobe 和 usdt 是用戶空間探針,專用于某個可執行文件。要使用這些探針,通過下文中的特殊語法。

profile 和 interval 探針以固定的時間間隔觸發;固定的時間間隔不在本文的范疇內。

統計系統調用數

映射 是保存計數、統計數據和柱狀圖的特殊 BPF 數據類型,你可以使用映射統計每個系統調用正在被調用的次數:

  1. $ sudo bpftrace -e 't:syscalls:sys_enter_* { @[probe] = count(); }'

一些探針類型允許使用通配符匹配多個探針,你也可以使用一個逗號隔開的列表為一個操作塊指明多個連接點。上面的例子中,操作塊連接到了所有名稱以 t:syscalls:sysenter_ 開頭的追蹤點,即所有可用的系統調用。

bpftrace 的內建函數 count() 統計系統調用被調用的次數;@[] 代表一個映射(一個關聯數組)。該映射的鍵 probe 是另一個內建指令,代表完整的探針名。

這個例子中,相同的操作塊連接到了每個系統調用,之后每次有系統調用被調用時,映射就會被更新,映射中和系統調用對應的項就會增加。程序終止時,自動打印出所有聲明的映射。

下面的例子統計所有的系統調用,然后通過 bpftrace 過濾語法使用 PID 過濾出某個特定進程調用的系統調用:

  1. $ sudo bpftrace -e 't:syscalls:sys_enter_* / pid == 1234 / { @[probe] = count(); }'

進程寫的字節數

讓我們使用上面的概念分析每個進程正在寫的字節數:

  1. $ sudo bpftrace -e 't:syscalls:sys_exit_write /args->ret > 0/ { @[comm] = sum(args->ret); }'

bpftrace 連接操作塊到寫系統調用的返回探針(t:syscalls:sys_exit_write),然后使用過濾器丟掉代表錯誤代碼的負值(/arg->ret > 0/)。

映射的鍵 comm 代表調用系統調用的進程名;內建函數 sum() 累計每個映射項或進程寫的字節數;args 是一個 bpftrace 內建指令,用于訪問追蹤點的參數和返回值。如果執行成功,write 系統調用返回寫的字節數,arg->ret 用于訪問這個字節數。

進程的讀取大小分布(柱狀圖):

bpftrace 支持創建柱狀圖。讓我們分析一個創建進程的 read 大小分布的柱狀圖的例子:

  1. $ sudo bpftrace -e 't:syscalls:sys_exit_read { @[comm] = hist(args->ret); }'

柱狀圖是 BPF 映射,因此必須保存為一個映射(@),這個例子中映射鍵是 comm

這個例子使 bpftrace 給每個調用 read 系統調用的進程生成一個柱狀圖。要生成一個全局柱狀圖,直接保存 hist() 函數到 @(不使用任何鍵)。

程序終止時,bpftrace 自動打印出聲明的柱狀圖。創建柱狀圖的基準值是通過 args->ret 獲取到的讀取的字節數。

追蹤用戶空間程序

你也可以通過 uprobes / uretprobes 和 USDT(用戶級靜態定義的追蹤)追蹤用戶空間程序。下一個例子使用探測用戶級函數結尾處的 uretprobe ,獲取系統中運行的每個 bash 發出的命令行:

  1. $ sudo bpftrace -e 'uretprobe:/bin/bash:readline { printf("readline: \"%s\"\n", str(retval)); }'

要列出可執行文件 bash 的所有可用 uprobes / uretprobes, 執行這個命令:

  1. $ sudo bpftrace -l "uprobe:/bin/bash"

uprobe 指向用戶級函數執行的開始,uretprobe 指向執行的結束(返回處);readline() 是 /bin/bash 的一個函數,返回鍵入的命令行;retval 是被探測的指令的返回值,只能在 uretprobe 訪問。

使用 uprobes 時,你可以用 arg0..argN 訪問參數。需要調用 str() 將 char * 指針轉化成一個字符串。

自帶腳本

bpftrace 軟件包附帶了許多有用的腳本,可以在 /usr/share/bpftrace/tools/ 目錄找到。

這些腳本中,你可以找到:

  • killsnoop.bt——追蹤 kill() 系統調用發出的信號
  • tcpconnect.bt——追蹤所有的 TCP 網絡連接
  • pidpersec.bt——統計每秒鐘(通過 fork)創建的新進程
  • opensnoop.bt——追蹤 open() 系統調用
  • bfsstat.bt——追蹤一些 VFS 調用,按秒統計

你可以直接使用這些腳本,比如:

  1. $ sudo /usr/share/bpftrace/tools/killsnoop.bt

你也可以在創建新的工具時參考這些腳本。

鏈接

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-11-27 11:00:15

2018-11-14 10:20:15

SonarQube開源追蹤代碼

2020-07-20 18:30:44

Fedora 32DockerLinux

2011-07-19 17:15:29

iPhone App

2022-12-03 16:02:51

2019-10-29 16:30:10

FedoraSSH端口Linux

2020-08-16 09:00:15

樹莓派FedoraLinux

2021-08-19 18:28:22

FedoraLinuxOpenCV

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2019-11-11 15:10:37

FedoraLinuxbash

2019-06-27 14:00:13

edoraMycroft開源

2009-12-17 09:56:01

FedoraPPStream網絡電視

2022-02-09 15:29:35

Java組件編程語言

2021-05-19 09:29:52

VueAxios異步請求

2025-04-03 03:55:00

2010-03-01 15:55:00

Fedora Eva

2019-06-24 13:34:29

FedoraAnsible 2.8系統運維

2019-07-05 18:06:18

ffsendFirefox SenLinux

2019-12-02 15:23:34

FedoraLinuxGIMP

2020-03-07 18:51:11

EclipseFedoraPHP
點贊
收藏

51CTO技術棧公眾號

少妇av一区二区| 欧美日韩在线观看免费| 日本欧美在线| 一区二区在线观看免费视频播放| av一本久道久久波多野结衣| 久久久精品免费看| 伊人久久大香线蕉综合网蜜芽 | 亚洲国产综合久久| 蜜乳av综合| 日韩欧美在线一区二区三区| www.四虎成人| 黄色大片在线| 国产精品全国免费观看高清| 国产欧美精品一区二区三区| 中文字幕欧美人妻精品| 亚洲一级一区| 日韩视频精品在线| 白白色免费视频| 1313精品午夜理伦电影| 91成人在线观看喷潮| 国产传媒久久久| 91在线直播| 99v久久综合狠狠综合久久| 91欧美日韩一区| 91视频在线视频| 一区三区视频| 久久av红桃一区二区小说| 国产一区二区三区四区五区六区 | 国产精品一区二区亚洲| 黑人久久a级毛片免费观看| 欧美军同video69gay| 成年人网站大全| 色综合桃花网| 亚洲成人精品一区二区| 午夜探花在线观看| 北岛玲日韩精品一区二区三区| 99久久99久久精品国产片果冻| 91亚洲精品丁香在线观看| 中文区中文字幕免费看| 久久久综合网| 欧美一区二区三区四区在线| 国产污视频在线看| 国产精品扒开腿做爽爽爽软件| 久久综合伊人77777蜜臀| 黄色一级片一级片| 欧美日韩黑人| 伊人精品在线观看| 免费看的黄色网| 少妇精品久久久| 亚洲乱码国产乱码精品精| 日韩www视频| 欧美激情极品| 亚洲美女性视频| www.久久国产| 伊人精品一区| 国产一区二区三区视频在线观看 | 免费看黄网站在线观看| 国产成人在线电影| 国产二区一区| 视频二区在线观看| 91农村精品一区二区在线| 久久久99爱| 邻家有女韩剧在线观看国语| 久久久蜜臀国产一区二区| 日韩国产欧美一区| 成年人视频网站在线| 国产精品高清亚洲| 黑人巨茎大战欧美白妇| 爱啪视频在线观看视频免费| 疯狂欧美牲乱大交777| 欧美黄网站在线观看| 日韩av电影资源网| 在线成人免费观看| 逼特逼视频在线观看| 亚洲婷婷丁香| 色综合影院在线| 久草国产在线视频| 亚洲综合二区| 国产精品入口福利| 中文字幕免费高清在线观看| 国产精品乡下勾搭老头1| 国产一区在线观| 国产最新视频在线观看| 日韩一区欧美小说| 99在线精品免费视频| 亚洲成人av观看| 在线观看91精品国产麻豆| 大尺度做爰床戏呻吟舒畅| 国产欧美日韩免费观看| 久久亚洲精品一区| 好看的av在线| 国产伦精品一区二区三区视频青涩| 粉嫩av四季av绯色av第一区| 麻豆av电影在线观看| 亚洲色图在线看| 97超碰国产精品| 桃子视频成人app| 日韩视频永久免费| 欧洲av一区二区三区| 欧美在线观看天堂一区二区三区| 午夜精品久久久久久久99黑人| 中文字幕av资源| 99久久综合狠狠综合久久| 在线观看日韩羞羞视频| 大桥未久在线视频| 欧美一区二区福利在线| 日本猛少妇色xxxxx免费网站| 黄色成人在线网址| 国产欧美精品日韩精品| 色哟哟在线观看| 一区二区三区免费观看| 天天操,天天操| 无码少妇一区二区三区| 欧美丰满老妇厨房牲生活| 夜夜躁日日躁狠狠久久av| eeuss影院一区二区三区| 一本色道久久综合亚洲精品婷婷 | 欧美xxxxx精品| 青草国产精品| 日本不卡视频在线播放| 精品久久久无码中文字幕| 国产欧美一区二区三区在线看蜜臀| 人妻激情另类乱人伦人妻| 欧美高清影院| 亚洲天堂av电影| 久久久久久久久久久久久久av| 国产综合一区二区| 亚洲国产高清国产精品| 原纱央莉成人av片| 亚洲的天堂在线中文字幕| 国产波霸爆乳一区二区| 久久国产人妖系列| 神马影院一区二区三区| 最近高清中文在线字幕在线观看1| 日韩欧美色综合| 手机在线中文字幕| 久久国产精品99久久人人澡| 涩涩日韩在线| 国产精品亚洲d| 国产一区二区三区视频| 香蕉影院在线观看| 久久久国产午夜精品| 韩国日本在线视频| 九色精品国产蝌蚪| 国产精品盗摄久久久| 精品视频二区| 在线观看亚洲精品视频| 国产三级av在线播放| 丝袜美腿亚洲综合| 日本一区二区免费看| 日本精品在线一区| 日韩中文在线视频| 国产精品自拍电影| 亚洲老妇xxxxxx| 在线观看你懂的视频| 黄色成人在线网站| 精品久久精品久久| 欧美gv在线观看| 亚洲精品小视频| 国产精品无码一区| 亚洲欧洲日产国码二区| 日本r级电影在线观看| 欧美视频在线观看| 麻豆av一区二区| 国产精品蜜月aⅴ在线| 日韩视频免费中文字幕| www夜片内射视频日韩精品成人| 亚洲人xxxx| 88av在线播放| 久久综合激情| 法国空姐在线观看免费| www.成人网| 奇门遁甲1982国语版免费观看高清 | 韩国成人一区| 欧美色网在线| 欧美成人午夜激情在线| 天天av天天翘| 欧美色图在线观看| 国产精品16p| 国产日韩欧美在线一区| 中文字幕一区二区在线观看视频| 国产精品www994| 日韩电影在线播放| 一区中文字幕电影| 国产91精品在线播放| 国产在线激情视频| 日韩精品在线观看网站| 96亚洲精品久久久蜜桃| 亚洲国产精品久久人人爱蜜臀| 在哪里可以看毛片| 国产福利不卡视频| 婷婷丁香激情网| 欧美黄色免费| 日韩欧美一区二区三区四区| 国产精品久久免费视频| 欧美一级免费视频| 成人片在线看| 亚洲欧美激情另类校园| 国产免费叼嘿网站免费| 色香色香欲天天天影视综合网| 欧美 日韩 国产 一区二区三区| 97精品超碰一区二区三区| 三区视频在线观看| 小嫩嫩精品导航| 成人在线免费高清视频| 日韩成人a**站| 鲁片一区二区三区| 白嫩白嫩国产精品| 国产日韩专区在线| 激情开心成人网| 国语自产精品视频在线看| 日本精品在线| 在线激情影院一区| 青青草手机在线| 欧美精品一区在线观看| 国产男女猛烈无遮挡| 欧美性猛交一区二区三区精品| 久久精品国产亚洲AV无码麻豆 | 亚洲欧美中文日韩v在线观看| 99在线观看精品视频| 欧美日韩综合不卡| 91porny九色| 欧美性xxxxx| 国产精品一区二区6| 亚洲一区二区欧美激情| 精品欧美一区二区久久久久| 国产精品久久精品日日| 亚洲一区二区自偷自拍| 久久免费视频色| 国产chinese中国hdxxxx| 国产成人激情av| 国产调教打屁股xxxx网站| 国产一区二区三区国产| 国内av一区二区| 久久精品免费观看| 性生生活大片免费看视频| 欧美a一区二区| 999在线免费视频| 久热国产精品| 91蝌蚪视频在线观看| 99精品久久| aa免费在线观看| 丝袜亚洲另类欧美| 黄色免费网址大全| 蜜桃av噜噜一区二区三区小说| chinese少妇国语对白| 日本最新不卡在线| 艹b视频在线观看| 老鸭窝一区二区久久精品| 日本三级黄色网址| 激情亚洲综合在线| 人妻换人妻仑乱| 国产传媒日韩欧美成人| 麻豆短视频在线观看| 北条麻妃一区二区三区| 久久久久久久久久影视| www.av精品| 亚洲色成人网站www永久四虎| 国产欧美一区二区精品秋霞影院 | 青青国产在线| 中文字幕亚洲一区在线观看| 久草免费在线观看| 欧美国产日韩xxxxx| 国产免费拔擦拔擦8x高清在线人| 3344国产精品免费看| 第四色男人最爱上成人网| 成人福利在线视频| swag国产精品一区二区| 麻豆一区区三区四区产品精品蜜桃| 久久综合欧美| 先锋影音男人资源| 中文一区二区| 色一情一区二区三区| 国产成人在线视频播放| av无码一区二区三区| 中文天堂在线一区| 青娱乐免费在线视频| 欧美午夜影院在线视频| 亚洲熟女乱色一区二区三区久久久| 欧美一级国产精品| 日本不卡免费播放| 久久精品99久久久久久久久| 国产理论电影在线| 国产成人在线一区二区| 亚洲一区二区电影| 日本在线观看不卡| 欧美日韩一卡| 无码日韩人妻精品久久蜜桃| 精品一区中文字幕| 亚洲狠狠婷婷综合久久久久图片| 国产精品网站在线| 欧美一级视频免费观看| 欧美日韩大陆一区二区| 五月天婷婷在线观看| 中文字幕久久亚洲| 少妇视频一区| 亚洲va国产va天堂va久久| 伊人久久大香线蕉av不卡| 欧美日韩午夜爽爽| 蜜桃精品视频在线| 国产精品久久久免费观看| 亚洲欧洲成人av每日更新| 日韩特级黄色片| 日韩精品中午字幕| 99视频在线观看地址| 午夜剧场成人观在线视频免费观看| 欧美一级二级视频| 久久国产精品一区二区三区四区| 99久久99热这里只有精品| 久久9精品区-无套内射无码| 国产成人在线看| 精品一区二区在线观看视频| 黑人巨大精品欧美一区免费视频 | 国产韩日精品| 国产一级特黄a大片99| 亚洲免费二区| 亚洲天堂国产视频| 久久网站热最新地址| 国产小视频在线看| 91精品久久久久久久久99蜜臂| 精品成人一区二区三区免费视频| 性欧美办公室18xxxxhd| 欧美欧美在线| 熟妇熟女乱妇乱女网站| 免费人成精品欧美精品 | 黄色www视频| 麻豆乱码国产一区二区三区| а√天堂资源国产精品| 欧美一区二区三区四区在线观看地址 | 国产精品免费久久| 免费在线不卡av| 亚洲一区999| 电影亚洲精品噜噜在线观看| 快播亚洲色图| 天堂一区二区在线| 91精彩刺激对白露脸偷拍| 舔着乳尖日韩一区| 天天摸天天碰天天爽天天弄| 高清一区二区三区四区五区 | 日韩三级在线播放| 丝袜亚洲另类欧美综合| 国产美女永久免费无遮挡| 色婷婷国产精品综合在线观看| 欧美在线一卡| 国产a级全部精品| 国产欧美日韩精品一区二区免费| 丁香啪啪综合成人亚洲| 国产亚洲欧美中文| 国产又粗又猛又爽又| 中文字幕亚洲欧美日韩高清| 精品久久福利| 中国一级大黄大黄大色毛片| 国产精品一区免费视频| 国产无遮挡又黄又爽在线观看| 欧美电影免费观看完整版| 国产精品—色呦呦| 欧美精品七区| 麻豆91小视频| 91嫩草|国产丨精品入口| 日韩欧美高清dvd碟片| 国产理论在线| 视频三区二区一区| 国产精品资源站在线| 国产黄色片在线免费观看| 欧美精品一区二区三| 伊人色综合一区二区三区影院视频| 日本视频一区在线观看| 国产一区在线精品| 久久精品免费av| 亚洲人成人99网站| 亚洲天堂网站| 真人抽搐一进一出视频| 久久综合九色综合欧美亚洲| 在线观看毛片网站| 欧美激情免费在线| 最新亚洲精品| 亚洲日本黄色片| 亚州成人在线电影| yourporn在线观看中文站| 91亚洲国产精品| 国产精品美女| 无码黑人精品一区二区| 亚洲国产成人精品女人久久久| 写真福利精品福利在线观看| 浴室偷拍美女洗澡456在线| www.亚洲色图| 国产又粗又猛又黄又爽| 91精品国产91久久久久久久久| 日韩成人综合| 日韩aaaaa| 3atv一区二区三区| 天堂资源在线| 成人在线免费高清视频| 国产欧美一区二区精品仙草咪| 精品人妻一区二区三区三区四区| 浅井舞香一区二区| 欧美日韩四区| 懂色av粉嫩av浪潮av| 亚洲激情视频网站| 亚洲影视资源|