問題タブ [systemtap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
semantics - Linux での Systemtap libdwfl エラー
仮想Linuxで、OSプロセスをプロファイリングするためのSystemtapツールを動作/セットアップしようとしています。VirtualBox を使用してイメージを実行しています。経由
と
取得したバージョンは次のとおりです。
ツールを正しくダウンロードしてインストールし、簡単なプログラム (.stp) を作成しました。ただし、同じエラーが発生し続けます。これは、多くの場所で情報を検索しても成功しませんでした:
実行後:
私は得る:
https://sourceware.org/systemtap/SystemTap_Beginners_Guide/errors.htmlによると
セマンティック エラー: libdwfl の失敗 デバッグ情報の処理中に問題が発生しました。ほとんどの場合、このエラーは、プローブされたカーネルとバージョンが正確に一致しない kernel-debuginfo パッケージのインストールが原因で発生します。インストールされた kernel-debuginfo パッケージ自体に、一貫性または正確性の問題がある可能性があります。
「kernel-debuginfo」パッケージに関する関連情報は見つかりませんでした。また、冗長オプションを試してみましたが、メリットはありませんでした。VM の古いスナップショットを試してみました。何か案は?
私が実行した .stp プログラムのコード:
linux - ユーザー空間アプリケーションのシステム タップ スクリプトをクロス コンパイルする方法
私が直面した課題は、スクリプト内のプロセス名/ライブラリ名を特定することでした.クロスコンパイル中に、プロセス名とライブラリ名は、ホスト内のプロセス/ライブラリの実際のパスで参照されています(生成された.コ)。
ホストとターゲットの実際のパスが異なるため、クロス コンパイルされたインストルメンテーションは機能しません。
linux - SystemTap を使用して VFS でファイルのオープンとクローズをプローブするにはどうすればよいですか?
SystemTap スクリプトの使用例を見probe syscall.open.return { }
ましたが、systemcall を呼び出さないアプリケーションがいくつかあります VFS で開いているファイルをプローブするにはどうすればよいですか
rhel5 - systemtap がフレームグラフの作成に必要な出力を生成しないのはなぜですか?
フレームグラフ データを生成する目的で stap を実行すると、out.stap-stacks にプロセス データがないのはなぜですか?
- OS:RHEL5.10.0.2
- カーネル: 2.6.18-371.11.1.el5
- システムタップ: 1.8-6.el5
インストールされたパッケージ:
systemtap-sdt-devel-1.8-6.el5
systemtap-devel-1.8-6.el5
systemtap-devel-1.8-6.el5
systemtap-runtime-1.8-6.el5
systemtap-sdt-devel-1.8-6.el5
systemtap-1.8-6.el5
systemtap-initscript-1.8-6.el5
systemtap-client-1.8-6.el5
systemtap-server-1.8-6.el5
systemtap-testsuite-1.8-6.el5
カーネル-devel-2.6.18-371.11.1.el5
カーネル-デバッグ-devel-2.6.18-371.11.1.el5
使用したコマンド:
out.stap-stacks ファイルのサンプル:
0xffffffff8000e81a 0x0 1 0xffffffff8004ab87 0x0 1 0xffffffff8025d15d 0x0 1 0xffffffff80239356 0x0 1 0xffffffff8004219a 0x0 1 0xffffffff8000ca32 0x0 1 0xffffffff8003214e 0x0 1 0xffffffff80013bc8 0x0 1 0xffffffff80232d41 0x0 1 0xffffffff8001a4ca 0x0 1 0xffffffff80011db5 0x0 1 0xffffffff8004aad2 0x0 1 0xffffffff800ec8bb 0x0 1 0xffffffff8003ead5 0x0 1 0xffffffff80234c43 0x0
systemtap - systemtap を使用してユーザー空間プローブから戻り値にアクセスする方法
ファイル名やファイル記述子など、glibc の「open」関数から返されるデータにアクセスしたい
私は試します
しかし、それはエラーです
セマンティック エラー: 未解決のターゲット シンボル式: 識別子 '$fd' at malloc.stp:3:10 ソース: fd = $fd ^
パス 2: 分析に失敗しました。[マンエラー::pass2]
linux - forktracker.stp の実行時に pid() と new_pid が同じ値であることを理解する方法は?
プロセス フローを追跡するためにforktracker.stpを使用しています。fork
スクリプトは次のようになります。
スクリプトを実行すると、次の結果が出力されることがわかりました。
pid()
とnew_pid
が同じ値である理由がわかりません。fork
「一度呼んだら二度戻る」に関係しているのか疑問です。そこで、テストする簡単なプログラムを作成します。
このプログラムを追跡すると、スクリプトは次を出力します。
fork
したがって、「 1回呼び出して2回返す 」とは関係ないようです。
pid()
とnew_pid
が同じ値であることをどのように理解できますか?
systemtap - systemtap : ローカル変数にはアクセスできますが、ローカル ポインターにはアクセスできません
システム タップを使用してソース コード フローを理解したかったのですが、kernel.statement プローブ関数を使用してローカル変数にアクセスしようとしたため、ポインターを除く他のすべての変数が表示されます。
上記の stap コードを実行すると、
local = pid=0xf98 ret=0x0 task_local=? 私=?
task_local と i の値が出力されない理由を理解するのに役立ちます。
よろしく、ヤシュ。