問題タブ [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.

0 投票する
2 に答える
3297 参照

monitoring - ゾーンごとに集計された %CPU、%Memory、およびネットワーク イン/アウトを返す Dtrace スクリプト

CPU 使用率、メモリ使用率、ネットワークの入出力バイト数を返す DTrace スクリプトが必要です。ゾーンごとにデータを集計します。このようなもの:

今では、私は使用しています:

それは似たようなものを返します(ネットワークトラフィックなし):

データをネットワーク トラフィックと組み合わせるために、DTrace で同じことを行う必要があります。

0 投票する
1 に答える
646 参照

process - dtrace を使用して、プロセスごとに消費されるマイクロ秒の CPU を表示するにはどうすればよいですか?

Solaris で dtrace を使用すると、次のスクリプトを使用して、start から control-C までの間隔で、特定のプロセス (または execname) のオン CPU 時間を累積できます。

(累積された時間には、ナノ/マイクロ秒の累積を可能にする細粒度があります。)

同じ時間枠で、配列内のすべてまたは多くのプロセスを累積し、ブレーク (^C) で累積されたすべての CPU 時間を報告したいと考えています。

これを行う最善の方法は何ですか?

0 投票する
0 に答える
486 参照

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」プロバイダーを介してこのトレースを実行できれば幸いです。

ありがとう!

0 投票する
1 に答える
365 参照

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 を実行しようとすると、次のようになります。

0 投票する
1 に答える
602 参照

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 の観点から) 複雑なエンコーディングについて心配する必要はありません。

0 投票する
1 に答える
342 参照

linux - 動作中の Linux ustack() 無効なアドレスの DTrace

Linux の DTrace で次の .d スクリプトを実行すると:

次の種類のエラーが多数発生します。

それらを修正するにはどうすればよいですか?

0 投票する
0 に答える
219 参照

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 のサイトの最新バージョンを使用しています。

0 投票する
1 に答える
964 参照

xcode - XCode でカスタム Instrument を作成するためのチュートリアル

XCode で独自のカスタム Instrument を作成したいと考えています。残念ながら、チュートリアルが見つからないようです。私が見つけた唯一の助けはマニュアルであり、私の意見では自己完結型ではありません。チュートリアルを知っている人はいますか?実際、1 つのカスタム インストゥルメント (ビルトインの 1 つでも) を調べることができれば、私はすでに満足しています。

関連がある場合は、JAVA 用の時間/CPU プロファイラーを作成する予定です。

0 投票する
2 に答える
336 参照

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が呼び出されると想定されます。しかし、どういうわけか書き込みシステムコールが表示されません。何故ですか?

0 投票する
1 に答える
4046 参照

linux - Dtrace 無効なプローブ指定子エラー

Ubuntu 11.04 に Dtrace をインストールしました。

私は実行できました:

と:

適切にコマンドを実行し、結果を取得しました。

しかし、私が実行しようとしたとき:

次のようなエラーが表示されます。

dtrace: 無効なプローブ指定子proc:::exec-success{ trace(curpsinfo->pr_psargs); }: プローブの説明proc:::exec-successが一致するプローブがありません。

ここで何が問題なのですか?どうすればこれを修正できますか?