問題タブ [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.
c - dtrace - 関数が呼び出されたさまざまな場所から関数に渡される変数の集約
複雑なタイトルで申し訳ありませんが、これが私のスクリプトの dtrace 出力です。これは、私が話していることを説明するのに役立つと思います。
dtrace スクリプトは次のとおりです。
FuncXXX には次の記号があります。void FuncXXX(void *arg, long int p, int q);
p
今、私は変数とを集約したいのですq
が、 FuncXXX が呼び出された順序で、例えば:
それは可能ですか?FirstFunc
または、 、SecondFunc
、ThirdFunc
および をFourthFunc
個別にトレースする必要がありますか? しかし、問題は、その関数のすべてで、FuncXXX
常に呼び出すことができるとは限らないということです。
すべての回答によろしくお願いします。
macos - DTrace END プローブが起動しない
私は 2009 年半ばの MacBook Pro と新しい 2012 年の MacBook Pro を持っており、DTrace (かなり素晴らしいツール) を学んでいます。新しい 2012 MBP で集計を計算すると、集計が出力されません。
私の2009年半ばのMBPでは、次のように表示されます。
2012 MBP には何も表示されません。
BEING および END プローブに printf を追加して、END プローブが次のように起動するかどうかを確認しました。
2009 年半ばの MBP では両方のプローブが発射され、出力されましたが、2012 年の MBP では BEGIN プローブのみが発射されました。END は発砲しませんでした。
どちらの MBP も Lion 10.7.3 を実行しています。次に何を試せばよいかわかりません。今思いつく唯一の違いは、2012 MBP に開発者コマンド ライン ツールをインストールしていないことです。しかし、それは私には意味がなく、暗闇の中でのショットです.
ヘルプやアイデアをいただければ幸いです。ありがとう。
=============[ルートアカウントを有効にする]====================
だから私はルートアカウントを有効にしてコマンドを再実行しました
成功しませんでしたが、成功した場合
できます!
=============[ kill -s INT ]=============================
もう少し実験をしました。私が実行した場合:
すべてが機能し、出力が表示されます。
私が実行した場合:
これも機能します!
しかし、ターミナルで control-c を使用すると、出力が表示されません。
control-c と kill -s INT の違いは何ですか?
javascript - DTrace を使用した Node.js のプロファイリング
現在、node.js アプリケーションのプロファイリングを行っています。Dtrace を使用する必要があることを示唆するブログhttp://blog.nodejs.org/2012/04/25/profiling-node-js/を見つけました。ここに示す手順を使用して、ubuntu 12.04 に dtrace をインストールしました: https://askubuntu.com/questions/60940/how-do-i-install-dtrace
ただし、ノード アプリケーションの実行中にターミナルでこのコマンドを実行すると、次のようになります。
stacks.out は、次を除いて空白のままです: CPU ID FUNCTION:NAME 1 387695 :tick-60s
何が間違っている可能性がありますか?
c - opensolaris での dtrace libc プローブ
getenv 関数をトレースしようとすると、次のようになりました。
myapp からの ldd:
なぜそれが起こっているのですか?libc 関数を dtrace 経由でトレースできるようにするソリューションはありますか?
よろしくお願いします
c - アプリケーションからグローバル変数にアクセスするdtrace
アプリのコードが次のようになっているとします。
global_var
さて、 dtraceスクリプトでアクセスして印刷する可能性があれば教えてください。
よろしくお願いします
macos - OS X システム コールの割り込み
クローズドソース ソフトウェアの欠陥を克服するために、いくつかの OS X システム コールを挿入する(元の関数の代わりに自分の関数を呼び出す)必要があります。
結果として得られるソリューションは 10.5 (Leopard) 以降で機能することが望ましいですが、議論が十分に強力であれば、10.6 (Snow Leopard) を要求できるかもしれません。
結果として得られるソリューションは実行可能ファイルであることが望ましいですが、私はスクリプトで解決するかもしれません。
結果として得られるソリューションは、ターゲット アプリケーションが実行された後でも介入(「ベクトルを盗む」)できることが望ましいですが、アプリケーションのロード中に自分自身を挿入する必要があるテクノロジに落ち着くことができます。
結果として得られるソリューションは C または C++ で開発されることが望ましいですが、Objective-C などで解決することもできます。
これまでのところ、次のことを試しました。
1) DTraceスクリプトは私に多くのことを教えてくれましたが、D 言語の制限(制限されたフロー制御など)により、結果がスクリプトになることは言うまでもなく、私がやっていることは大きな苦痛になります。これは、私が撮影しているものほど整然とした自己完結型ではありません。
2) DYLD_INSERT_LIBRARIES介入。これは多くの点で滑らかですが、おそらく名前空間の平坦化が原因で(これが何を意味するのかを深く理解するふりはしません)、より単純な実行可能ファイルに対してはうまく機能しますが、ビルドしてもターゲット アプリケーションがチョークします。実際には呼び出しを介在させない何もしないライブラリ。
私の最新のアイデアは、mach_star ( https://github.com/rentzsch/mach_star ) を試してみることですが、まずここでやめて、常に私よりも多くのことを知っている Stack Overflow コミュニティに尋ねます...
…次は mach_star 以外を見てみようかな。
dtrace - DTrace-リターンプローブで初期パラメータを正しく取得するにはどうすればよいですか
リターンプローブの関数に渡された初期引数を読み取ろうとしています。エントリプローブとは異なり、リターンプローブの引数変数(、、arg0
... arg1
)には初期パラメータが含まれておらず、これらの値をどのように取得できるかわかりません。
また、並行性の問題があるため、グローバル変数に値を格納することは避けたいと思います。
macos - Mac OS X Mountain Lion を持っている人が必要ですか? Udp プローブ
Mac OS X Mountain Lion をお使いの場合は、ターミナル画面に「 sudo dtrace -ln udp::: 」と入力して、結果をコピーしていただけませんか?
新しい OS で利用できる UDP プローブについて知る必要があります。
前もって感謝します。
c - dtraceを使用したプロファイルCコード
私はスタックオーバーフローを調べて、最高のプロファイリング手法を探していました。
私は24時間年中無休で実行され、Cで記述され、Oracle10gを使用する一連のプロセスを持っています。私が試したいいくつかのツールを発見しました:oprofile、strace、systemtap、dtrace。
私はdtraceから始めたいので、実行中のプロセスに接続し、すべての関数呼び出し、それぞれに費やされた時間...多分callgraphを出力するいくつかの単純なdtraceスクリプトを探していました。
リンク、チュートリアル、マニュアルなど、最初に適切なスクリプトを提案してください。
linux - systemtapを使用してerlangをコンパイルしますが、dtraceが必要です
私は次のようにソースからerlangotpをコンパイルしています:
しかし、それはエラーを報告します:
systemtapはLinuxで使用するためのものであり、dtraceとは異なります。
dtraceをインストールした後、エラーは次のようになります。