問題タブ [dtrace]
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.
monitoring - ゾーンごとに集計された %CPU、%Memory、およびネットワーク イン/アウトを返す Dtrace スクリプト
CPU 使用率、メモリ使用率、ネットワークの入出力バイト数を返す DTrace スクリプトが必要です。ゾーンごとにデータを集計します。このようなもの:
今では、私は使用しています:
それは似たようなものを返します(ネットワークトラフィックなし):
データをネットワーク トラフィックと組み合わせるために、DTrace で同じことを行う必要があります。
process - dtrace を使用して、プロセスごとに消費されるマイクロ秒の CPU を表示するにはどうすればよいですか?
Solaris で dtrace を使用すると、次のスクリプトを使用して、start から control-C までの間隔で、特定のプロセス (または execname) のオン CPU 時間を累積できます。
(累積された時間には、ナノ/マイクロ秒の累積を可能にする細粒度があります。)
同じ時間枠で、配列内のすべてまたは多くのプロセスを累積し、ブレーク (^C) で累積されたすべての CPU 時間を報告したいと考えています。
これを行う最善の方法は何ですか?
macos - DTrace: OS X でユーザースタックサイズを追跡していますか? (curthread->t_procp->p_stksize?)
ユーザースタックサイズをトレースするためのこの単純な DTrace スクリプトに出くわしましたが、OS X Mountain Lion では機能しません。
(から: http://www.solarisinternals.com/wiki/index.php/DTrace_Topics_One_Liners )
OS X で返されるエラーは次のとおりです。
実際、OS X で「curthread」の有効なメンバーが何であるかを把握するのに苦労しています。スレッドの現在のユーザー スタック サイズにドリルダウンする同等の方法はありますか? それとも、「curthread」は OS X 上の単なる不透明なポインターであり、スレッドの識別にのみ使用できますか? 「pid」プロバイダーを介してこのトレースを実行できれば幸いです。
ありがとう!
macos - OSX 上の 32 ビット DTrace
OSX 上の 32 ビット実行可能ファイルで DTrace を実行する必要があります。2 台のマシンがあり、どちらも OSX 10.8.2 を実行しています。そのうちの 1 つは/usr/lib/dtrace/libdtrace_dyld.dylib
ファット バイナリであり、もう 1 つはそうではありません。
対
この2つはどこから来たのですか?太いものを「公式に」取得するにはどうすればよいですか。つまり、他のマシンからコピーするだけではありませんか?
これは、64 ビットのみの dylib を使用して 32 ビットの実行可能ファイルで dtrace を実行しようとすると、次のようになります。
cocoa - DTrace スクリプトから NSString を出力する方法
この質問は同じことを尋ねていますが、私が試したとき:
うまくいきませんでした。arg2 は NSString のアドレスでなければなりません。私は得た:
NSWindow -setTitle: 100685240 7fff92d82f73 7fff92d82f73 7fff78a6eb80 string addr = 7fff8e7e83b9 string val=Window dtrace: 有効なプローブ ID 5 でのエラー (ID 35737: objc9434:NSWindow:-setTitle::entry): 無効なアドレス (0x6c007400690074) アクション #8 の DIF オフセット24
NSString の MacRoman または ASCII エンコーディングを想定できます。基本的に、(DTrace の観点から) 複雑なエンコーディングについて心配する必要はありません。
linux - 動作中の Linux ustack() 無効なアドレスの DTrace
Linux の DTrace で次の .d スクリプトを実行すると:
次の種類のエラーが多数発生します。
それらを修正するにはどうすればよいですか?
c++ - Linux の dtrace は、プログラムの終了時に常にユーザーランド プローブを削除するとは限りません -- なぜですか?
(私がどのように dtrace をインストールしたかを知りたい場合は、この投稿の最後を参照してください。ここでは、既にインストールされているものと仮定します)
次の手順に従って、まったく問題のないカスタム プローブを作成しました。
A. _ プローブ定義で thing.d を作成します
B.シンプルな main.cpp を作成する
C. main.cpp をコンパイルします (ただし、リンクはしません)。_DTRACE_VERSION を定義する方法に注意してください。そうしないと、thing.h でプローブがコメントアウトされます。
D.プローブ オブジェクト ファイルを作成します (このファイルの一部として main.o を含める必要があることに注意してください)。
E.すべてをリンクする
問題は次のとおりです。アプリを実行し、CTRL-C で終了します (明らかに、無限ループのため、アプリは自動的に停止しません...)。
実際、これを数回行います。
次に、スーパーユーザー端末から:
こいつらはぶらぶらしてるだけだ...まるで登録解除などされていないようだ。「ps」を実行して、これらの pid (28217、28403、28636) を持つ proc があるかどうかを確認しましたが、何もありません。
興味深いことに、main.cpp から無限ループ (sleep() ループ) を削除し、アプリをすぐに終了させると、プローブが適切に削除されます。この問題は、sleep() 内で検出された CTRL-C に関係しているようです。おそらく、ある種の atexit() ハンドラが呼び出されていませんか?
これが私のシステム情報です:
DTRACE のインストール
Ubuntu に付属しているデフォルトの dtrace は使用していませんが、次のようにインストールした dtrace4linux を使用しています。
注: Paul Fox のサイトの最新バージョンを使用しています。
xcode - XCode でカスタム Instrument を作成するためのチュートリアル
XCode で独自のカスタム Instrument を作成したいと考えています。残念ながら、チュートリアルが見つからないようです。私が見つけた唯一の助けはマニュアルであり、私の意見では自己完結型ではありません。チュートリアルを知っている人はいますか?実際、1 つのカスタム インストゥルメント (ビルトインの 1 つでも) を調べることができれば、私はすでに満足しています。
関連がある場合は、JAVA 用の時間/CPU プロファイラーを作成する予定です。
kernel - dtrace: write sys コールをキャッチしません
私は dtrace を初めて使用し、基本的な dtrace スクリプトを作成しようとしています。次のように、別の端末で read(2) および write(2) システムコールをキャッチする例を見つけました。
指定された pid 番号は、他の端末の pid id からのものです。この例を見たとき、このスクリプトを dtrace で実行すると、読み取りと書き込みの syscall が表示されるはずでした。しかし、私は read syscall だけを観察しましたが、write syscall は観察しませんでした。
したがって、私が正しく理解している場合、私が観察した端末(pid 4217)で、その端末で何かを入力すると、カーネルはその文字を読み取るため、syscall が発生したと想定されます。「ls」のようなものを入力してEnterキーを押すと、カーネルがそれを読み取って実行し、出力を端末に書き込むため、write syscallが呼び出されると想定されます。しかし、どういうわけか書き込みシステムコールが表示されません。何故ですか?
linux - Dtrace 無効なプローブ指定子エラー
Ubuntu 11.04 に Dtrace をインストールしました。
私は実行できました:
と:
適切にコマンドを実行し、結果を取得しました。
しかし、私が実行しようとしたとき:
次のようなエラーが表示されます。
dtrace
: 無効なプローブ指定子proc:::exec-success
{ trace(curpsinfo->pr_psargs); }: プローブの説明proc:::exec-success
が一致するプローブがありません。
ここで何が問題なのですか?どうすればこれを修正できますか?