GoGPT Best VPN GoSearch

OnWorksファビコン

perf-probe - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで perf-probe を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド perf-probe です。

プログラム:

NAME


perf-probe - 新しい動的トレースポイントを定義する

SYNOPSIS


perf プローブ [オプション] --add=プローブ [...]
or
perf プローブ 【オプション】プローブ
or
perf プローブ [オプション] --del=[グループ:]イベント [...]
or
perf プローブ --list[=[グループ:]イベント]
or
perf プローブ [オプション] --line=LINE
or
perf プローブ [オプション] --vars=プローブポイント
or
perf プローブ [オプション] --funcs

DESCRIPTION


このコマンドは、シンボルによって動的トレースポイント イベントを定義し、debuginfo なしで登録します。
または C 式 (C 行番号、C 関数名、および C ローカル変数) によって
デバッグ情報。

OPTIONS


-k、--vmlinux=パス
debuginfo (Dwarf バイナリ) がある vmlinux パスを指定します。

-m, --module=MODNAME|PATH
perf-probe がプローブポイントまたはラインを検索するモジュール名を指定します。 のパスの場合
module ファイルが渡されると、perf-probe はそれをオフライン モジュールとして扱います (つまり、
まだロードされていないモジュールにプローブを追加します)。

-s、--source=パス
カーネル ソースへのパスを指定します。

-v、-verbose
より冗長にします (解析された引数を表示するなど)。 -q とは併用できません。

-q、-quiet
静かにしてください (エラーを含むメッセージを表示しないでください)。 -v とは併用できません。

-a、--add=
プローブ イベントを定義します (詳細については、PROBE SYNTAX を参照してください)。

-d、--del=
プローブ イベントを削除します。 これは glob ワイルドカード (*, ?) および文字クラス (例
[az]、[!AZ])。

-l, --list[=[グループ:]イベント]
現在のプローブ イベントを一覧表示します。 これは、イベント名のフィルタリング パターンも受け入れることができます。

-L、--line=
プローブ可能なソース コード行を表示します。 これには、
ソースコードの範囲。 (詳細は LINE SYNTAX を参照)

-V、--vars=
指定されたプローブ ポイントで使用可能なローカル変数を表示します。 引数の構文は次と同じです
PROBE SYNTAX はありますが、ARG はありません。

--externs
(--vars の場合のみ) ローカル変数に加えて、外部で定義された変数を表示します。

--インラインなし
(--add の場合のみ) インライン化されていない関数のみを検索します。 ない機能
have インスタンスは無視されます。

-F、--funcs[=フィルター]
特定のモジュールまたはカーネルで使用可能な関数を表示します。 -x/--exec を使用すると、リストも表示できます
ユーザー空間の実行可能ファイル/共有ライブラリ内の関数。 これは FILTER も受け入れることができます
ルール引数。

--filter=フィルター
(--vars および --funcs のみ) フィルターを設定します。 FILTER は glob パターンの組み合わせです。
詳細については、FILTER PATTERN を参照してください。 デフォルトの FILTER は "!k???tab_* & !--vars の場合は「crc_*」、および
--funcs の "!_*"。 複数のフィルターが指定されている場合、最後のフィルターのみが使用されます。

-f、-force
既存の名前のイベントを強制的に追加します。

-n、--ドライラン
ドライラン。 このオプションを指定すると、 --add と --del は実際の追加と削除を実行しません
操作。

--max-probes=NUM
イベントのプローブ ポイントの最大数を設定します。 デフォルトは 128 です。

-x, --exec=パス
ユーザー空間トレース用の実行可能ファイルまたは共有ライブラリ ファイルへのパスを指定します。 こともできます
--funcs オプションで使用できます。

-デマングル
アプリケーション シンボルを解読します。 --no-demangle を無効にすることもできます
解体。

--デマングル-カーネル
カーネル シンボルをデマングルします。 --no-demangle-kernel は、カーネルを無効にするためにも利用できます
解体。

-m/-x オプションがない場合、perf プローブは、オプションの後の最初の引数が
絶対パス名。 絶対パスの場合、perf プローブはそれをターゲットとして使用します
プローブするモジュール/ターゲット ユーザー空間バイナリ。

プローブ 構文


プローブ ポイントは、次の構文で定義されます。

1) 関数名に基づいてイベントを定義する
[EVENT=]FUNC[@SRC][:RLN|+OFFS|%return|;PTN] [ARG ...]

2) 行番号付きのソース ファイルに基づいてイベントを定義する
[EVENT=]SRC:ALN [ARG ...]

3) 遅延パターンを使用してソース ファイルに基づいてイベントを定義する
[EVENT=]SRC;PTN [ARG ...]

EVENT 新しいイベントの名前を指定します。省略した場合は、プローブの名前が設定されます
関数。 現在、イベントグループ名は プローブ. FUNC プローブされた関数を指定します
名前であり、次のオプションのいずれかを指定できます。 +オフ は関数からのオフセットです
バイト単位のエントリーアドレス、 :RLN は関数エントリ行からの相対行番号であり、
%戻る 関数の戻り値をプローブすることを意味します。 と ;PTN レイジー マッチング パターンを意味します (参照
レイジーマッチング)。 ご了承ください ;PTN は、プローブ ポイント定義の最後でなければなりません。 加えて、
@SRC その機能を持つソースファイルを指定します。 を指定することも可能です。
ソース行番号によるプローブポイント、または使用によるレイジーマッチング SRC:ALN or SRC;PTN 構文、
コラボレー SRC はソース ファイル パス、 :アルン は行番号であり、 ;PTN レイジーマッチングです
パターン。 ARG このプローブ ポイントの引数を指定します (PROBE ARGUMENT を参照)。

プローブ ARGUMENT


各プローブ引数は以下の構文に従います。

[NAME=]LOCALVAR|$retval|%REG|@SYMBOL[:TYPE]

NAME この引数の名前を指定します (オプション)。 ローカルの名前を使用できます
変数、ローカル データ構造体メンバ (例: var→field、var.field2)、固定のローカル配列
インデックス (例: array[1]、var→array[0]、var→pointer[2])、または kprobe-tracer 引数形式
(例: $retval、%ax など)。 この引数の名前は最後に設定されることに注意してください。
ローカル データ構造メンバーを指定する場合のメンバー名 (例:
var→フィールド1.フィールド2.) $変数   $params NAME には特別な引数も使用できます。 $変数
でアクセスできるローカル変数 (関数パラメーターを含む) に展開されます。
与えられたプローブポイント。 $params 関数パラメーターのみに展開されます。 タイプ をキャストします
この引数のタイプ (オプション)。 省略した場合、perf プローブは自動的にタイプ ベースを設定します
debuginfo で。 指定できます string ローカル変数または構造体メンバーのみの型
の配列またはへのポインタ チャリオット or 署名されていない チャリオット タイプ。

x86 システムでは、%REG は常にレジスタの短縮形です (%AX など)。 %RAX または
%EAX は無効です。

LINE 構文


行範囲は次の構文で記述されます。

"FUNC[@SRC][:RLN[+NUM|-RLN2]]|SRC[:ALN[+NUM|-ALN2]]"

FUNC は、行を表示する関数名を指定します。 反回神経 からの開始行番号です。
関数のエントリ行、および RLN2 終了行番号です。 プローブ構文と同様に、 SRC 手段
ソースファイルのパス ALN は開始行番号、 ALN2 ファイルの終了行番号です。
を使用して表示する行数を指定することもできます NUM。 また、 FUNC@SRC
組み合わせは、複数の関数が同じものを共有している場合に特定の関数を検索するのに適しています
名前。 したがって、「source.c:100-120」は、source.c ファイルの 100 番目から 20 番目までの行を示します。 と
「func:10+20」は、func 関数の 20 行目から 10 行を示しています。

LAZY マッチング


レイジー ライン マッチングはグロブ マッチングに似ていますが、パターンとターゲットの両方のスペースを無視します。 したがって、これはワイルドカード ('*'、'?') と文字クラス ([az]、[!AZ] など) を受け入れます。

例えば a=* 一致することができます a = b, a = b, a == b などがあります。

これにより、ポイント定義をプローブするためのある種の柔軟性と堅牢性が提供されます。
マイナーコードの変更。 たとえば、schedule() の実際の 10 行目は、次のように簡単に移動できます。
schedule() を変更しますが、同じ行が一致します rq=cpu_rq* にまだ存在している可能性があります。
関数。)

フィルタ パターン


フィルター パターンは、変数をフィルター処理するためのグロブ マッチング パターンです。
さらに、「!」を使用できます。 除外ルールを指定します。 また、「&」や「|」で複数のルールを組み合わせて指定し、「(」「)」を使用してそれらのルールを XNUMX つのルールとして折りたたむこともできます。

例 --filter "foo* | bar*" を使用すると、perf probe -V は "foo" で始まる変数を表示します。
"バー"。 --filter "!foo* & *bar" を使用すると、perf プローブ -V は、次で始まらない変数を表示します
"foo" で、"fizzbar" のように "bar" で終わります。 ただし、「foobar」は除外されます。


schedule() でプローブできる行を表示します。

./perf プローブ --ライン スケジュール

cpu ローカル変数を記録して、schedule() 関数の 12 行目にプローブを追加します。

./perf プローブ スケジュール:12 cpu
or
./perf プローブ --add='スケジュール:12 cpu'

これにより、名前が「schedule」で始まる XNUMX つ以上のプローブが追加されます。

update_rq_clock() を呼び出す schedule() 関数の行にプローブを追加します。

./perf プローブ 'スケジュール;update_rq_clock*'
or
./perf プローブ --add='スケジュール;update_rq_clock*'

schedule() ですべてのプローブを削除します。

./perf プローブ --del='スケジュール*'

/bin/zsh の zfree() 関数にプローブを追加します

./perf プローブ -x /bin/zsh zfree または ./perf プローブ /bin/zsh zfree

libc の malloc() 関数にプローブを追加

./perf プローブ -x /lib/libc.so.6 malloc または ./perf プローブ /lib/libc.so.6 malloc

onworks.net サービスを使用してオンラインで perf-probe を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。