問題タブ [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.
debugging - デバッグ シンボルをファイルと行番号に変換する
strace と SystemTap を使用して、システム コールでスタック トレースを取得しています。私が現在取得しているのは関数名を示していますが、ファイル名と行番号は示していません。オプションをls
使用した strace からのトレース:-k
ls
例の をわずかに変更したSystemTap からの別strace.stp
のもの:
16 進数を変換してファイル名と行番号を取得するにはどうすればよいですか?
locking - Systemtap の futexes.stp からの出力を解釈する方法
コードでロックの競合を見つけようとしていますが、標準の systemtap リリースで futexes.stp を見つけました。しかし、出力に関していくつか質問があります。
だからここに質問があります:
0x7f........ スタックアドレスで構成されているものは何ですか? 私はそれが私のアプリケーションからのものではないと確信しています。これらのライブラリまたはカーネル ミューテックス (または condvars) は、アプリケーションに代わって使用されますか? それを確認するにはどうすればよいですか?
短いアドレスの「ロック」は私のものです。gdb の「info symbol」コマンドでそれらを確認できますが、stap から自動的にシンボルにデコードする良い方法は何でしょうか?
私は、同じボックスにビルドされた Linux 4.6.2 メインライン カーネルを使用しており、git リポジトリの最新の systemtap を使用しています。私の Cruncher アプリケーションは -g でビルドされ、シンボルは削除されません。
よろしくお願いします!
linux-kernel - SystemTap スクリプトのコンパイルが kernel.xxx プローブの認識に失敗する
ArchLinux Wikiの指示に従って再構築されたカーネルを使用して、ArchLinux 4.7.4-1 で SystemTap を実行しています。SystemTap のバージョンは次のとおりです。
SystemTap スクリプトがあります。
-vvv
オプションを指定して実行した場合の出力は次のとおりです。
kernel.xxxx
SystemTap がプローブを認識できないようです。スクリプトを ArchLinux で正常に実行するには?
systemtap - systemtap スクリプト内でネットワーク上にデータを送信するにはどうすればよいですか?
systemtap を使用して、ネットワーク、ロック、タスク ウェイクアップの統計を監視しています。「println」(stap 命令) の代替手段を見つけて、リモート (ネットワーク) にデータを送信できるようにしたいと考えています。ターゲット(一時ファイルであっても、すべてのディスクアクセスを回避するという考え)。
UDP で十分でしょう。
systemtap スクリプト内で (テキスト) データを含むネットワーク パケットを送信する方法はありますか? netcat (nc) にパイプすることも考えましたが、避けたいと思っていました。
Google (正しいキーワード セットを選択しなかった可能性があります...) またはユーザー マニュアルで回答を見つけることができませんでしたか?
前もって感謝します。
c - システム タップの使用時に「プローブ オーバーヘッドがしきい値を超えました」というエラーを回避するにはどうすればよいですか?
stap
プログラムが呼び出すすべての関数を出力するために使用しようとしています。私はオンラインでいくつかの調査を行い、このスクリプト(と呼ばれるpara-callgraph.stp
)を見つけました:
これは次のように実行することを意図しています:
これを実行すると、問題が発生します。最初はすべて正常に動作しますが、すぐにsystemtap
これを stderr に出力して終了します。
オンラインでいくつかの調査を行ったところ、stap
ヒューリスティックがトリガーされてシャットダウンされていることがわかりました.2つのフラグ-g
と--suppress-time-limits
. (この提案は私のシステムでバックアップされman stap
ています。)ただし、その解決策は単に機能せず、コマンドは次のとおりです。
非常によく似たエラー メッセージを出力し、終了します。
このフラグが私の問題に対する適切な解決策ではないのはなぜですか? また、この問題は別の方法で解決できますか?それとも、systemtap はこの種のユースケースには適していませんか?
問題があれば、これを 32 ビットの Ubuntu VM で実行しています。
注意: systemtap がここで失敗する理由に最も関心があります。他のソフトウェアを使用して同じことを達成する他の方法ではありません。(実際、私の使用例では、上記のコードはsystemtap の悪用であることが判明しました。)
kill - systemtap スクリプトで kill シグナル送信者のホスト名を取得する方法
systemtap スクリプトを使用すると問題が発生します。systemtap スクリプトで kill シグナル送信者のホスト名を取得する方法がわかりません。例えば。サーバー 'sf1' で kill -9 xclock_process_pid を実行しています。同時に、1.stap -x xclock_process_pid を実行して xclock を監視します。「sf1」で kill -9 xclock_process_pid を送信するときに、systemtap スクリプトでサーバー名「sf1」を取得する方法はありますか?
しかし、私はいくつかの問題に遭遇しています。私の 1.stap を以下に示します。
「stap -g 1.stap」を実行すると、次のエラーが再表示されます。セマンティック エラー: 位置 0 でのプローブ ポイントの不一致 (代替手段: __nfs __scheduler __signal __tcpmib __vm _linuxmib _signal _sunrpc _syscall _vfs begin begin(number) end end(number) error error(number) generic ioblock ioblock_trace ioscheduler ioscheduler_trace ipmib irq_handler kernel kprobe kprocess linuxmib module( string) nd_syscall netdev never nfs nfsd perf process process(number) process(string) procfs procfs(string) scheduler scsi signal socket softirq stap staprun sunrpc syscall tcp tcpmib timer tty udp vfs vm workqueue): systemtap.stap の識別子「oneshot」: 87:7 プローブ ポイント ワンショット ソースの解決中: プローブ ワンショット { ^ パス 2: 分析に失敗しました。別の「--vp 01」オプションを使用して再試行してください。