問題タブ [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 投票する
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が一致するプローブがありません。

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

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

objective-c - DTrace 出力に Objective-C クラスを表示

次の DTrace スクリプトを使用すると、目的に近い出力を得ることができます。

呼び出されたクラスを出力に含めたいので、次のようにします。

classX正しいクラスはどこですか。

出力は引き続きインデントされ、Objective-C メッセージのみが含まれ、C 関数呼び出しは含まれません。

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

node.js - Dtrace を使用した Node.js プロファイリングで関数名が表示されない

DTrace を使用してプロジェクトの CPU 使用率をプロファイリングしようとしています。スクリプトに従っただけです

問題は、関数名が表示されないことです。ファイルは次のstacks.outようになります。

フレーム グラフは、実際の関数名ではなく関数呼び出しとして 16 進数 (つまり、「0x82474d1b」) を示します。

私は OmniOS (illumos ベースの OS) vagrant ボックスr151002を使用しており、これ ( https://gist.github.com/dalssoft/5595688 ) を実行して、OmniOS で node.js 32 ビットをビルドしました。

何かご意見は?

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

ruby - Ruby 2.0 の新しい Tracepoint API は、dtrace が使用するのと同じプローブを使用しますか?

私は Dtrace と Ruby の使用について少し時間をかけて学びました..その後、2.0 の Ruby コアで新しい TracePoint クラスを見つけました。TracePoint は、dtrace が Ruby の実行を監視するために使用するのと同じプローブを内部で使用しますか?