問題タブ [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.
macos - OS X: 実行中のプロセスにアタッチし、その環境変数を読み取る
実行中のプロセスの環境変数を読み取ることは可能ですか (可能であればどのように?)。より具体的には、プロセスの起動時に設定される一般的なユーザー セッション環境変数ではなく、プロセス自体によって設定される環境変数 (setenv() などを使用) に関心があります。
私は DTrace がこの仕事のツールになると考えましたが、オンラインで (このメーリング リストのスレッドから) 見つけた唯一の解決策は、スクリプトが私の Mac で実行できないため、Solaris に固有のもののようです。
おそらく、Instruments はこの機能を何らかの方法で公開していますが、私はまだそれを見つけていません。
また、素敵な小さなアプリケーションであるTasks Explorerも試しました。環境変数を含むプロセス情報が表示されますが、プロセス自体によって設定された環境変数は表示されません。
どんな助けでも大歓迎です!
objective-c - Objective-C の DTrace 出力をフィルタリングする方法は?
私はDTraceを学んでいますが、これは非常に強力なツールです。しかし、問題の 1 つは、DTrace が出力する情報が多すぎて、そのほとんどが NS クラスであることです。
しかし、私の質問は、ユーザーのクラスに適切なプレフィックスがない場合、システム クラスをフィルター処理する方法です。
(このトピックには、[Mac OS X で DTrace を使用してシステム メソッドまたはシステム フレームワークを使用せずに検出する方法]という同様のスタック オーバーフローの質問がありました。)
performancecounter - NFS マウントごとの dtrace スクリプト io カウンター
Nexenta マシン (OpenSolaris ベース) にある NFS マウントごとにパフォーマンス カウンターを測定する必要があります。
iostat は素晴らしいです。問題は、NFS レベルではなく、デバイスごとにカウントされることです。dtrace スクリプトでそれを行う方法はありますか?
私が興味を持っているカウンター: (CIFS/NFS) ボリューム/フォルダーごとの avg_latency (CIFS/NFS) ボリューム/フォルダーごとの read_latency (CIFS/NFS) ボリューム/フォルダーごとの write_latency (CIFS/NFS) ボリューム/フォルダーごとの read_ops/s (CIFS/ NFS) ボリューム/フォルダーごとの write_ops/s (CIFS/NFS) ボリューム/フォルダーごとの read_data/s (CIFS/NFS) ボリューム/フォルダーごとの write_data/s c pu_util%
ありがとう!
java - Time Profiler、Instruments、OSXにJAVAプロシージャ名がありません
私はJavaを使用してアルゴリズムの実装を書いています。OS X 10.7までは、Shark Profilerを使用して実装のプロファイルを作成していましたが、これはかなりうまく機能していました。ただし、新しいInstrumentsはプロシージャ名を検出しなくなりました。sharkのVM引数(つまり、-agentlib:Shark)を使用してJavaアプリケーションを実行しようとしましたが、10.7には不明であり、インストゥルメント用のそのようなagentlibは見つかりませんでした。
Insturmentsのシンボル名(16進数)にプロシージャ名を付ける方法について何かアイデアはありますか?違いがあれば、私はEclipseIndigoを使用しています。
ありがとう!
編集:これまでのところ、OS XMountainLionでは何も変わっていません。
編集#2:アップルのバグレポーターを介した(?)開発者からの更新:
dtraceは過去のある時点でJavaスタックをサポートしていましたが、サポートが維持されているかどうかは正直に言えませんでした。これは、測定しようとしているものに対する実行可能な回避策である可能性があります。それ以外の場合、現時点ではパフォーマンスツールの優先事項ではありません。/usr/bin/cpu_profiler.dにあるDスクリプトから始めて、jstackも収集するように修正することをお勧めします。
編集#3:さて、もう少し議論した後、開発者自身がそのスクリプトがどこから来たのか知らなかったことがわかりました。明らかに、InstrumentsのタイムプロファイラーはDTraceを使用しないため、残っている唯一のオプションは、独自のDTraceスクリプトまたはInstrumentを作成することです。
その通りです。お詫び申し上げます。そのスクリプトがどこから来たのかわかりません。注意深く見ると、jstackアクションが含まれていないため、とにかく必要なものではありません。私が提供できる唯一のJavaプロファイリングオプションはDTraceのようです。DTraceには、プロファイルプロバイダーと、Javaスタックを収集するjstackアクションがあります。「集計」を使用して、最も重いスタックトレースを特定できます。これらはすべて、コマンドラインから機能します。DTraceのドキュメントは、ほとんどがSunによって管理されており、ほとんどがプロファイルプロバイダーを対象としているため、DTraceチュートリアルを紹介します。
人々がオンラインで言っていることにもかかわらず、Instrumentsはすべて、特に時間プロファイリングにDTraceを使用しているわけではないので、InstrumentsUIで簡単な修正を提供することはできません。
perl - OS X 10.5でdtraceを使用して、どのperl subsが最も多くのメモリ割り当てを引き起こしているかを判断できますか?
かなり大きなperlコードベースがあります。
複数時間実行される一部のプロセス(ETLジョブ)は、突然、通常よりもはるかに多くのRAMを消費し始めました。関連するリリースの変更の分析は、時間がかかり、苛立たしいプロセスです。より自動化された分析を使用して、原因を特定したいと考えています。
私たちのライブ環境はDebiansqueezeのperl5.14です。
しかし、私は多くのOSX10.5マシンにアクセスできます。Dtraceとperlは、このプラットフォームでうまく連携しているようです。Linuxでdtraceを使用するには、起動にさらに作業が必要なようです。私は、メモリ割り当てパターンがライブシステムと開発OS Xシステムの間で類似していること、または少なくともこの新しいメモリ使用の原因を見つけるのに十分類似していることを望んでいます。
このスライドデッキ:
https://dgl.cx/2011/01/dtrace-and-perl
dtraceの使用方法を示しています。perlsubによるmallocへの呼び出し数を示しています。プロセスの存続期間にわたって各サブを実行している間にperlが割り当てるメモリの総量を追跡することに興味があります。
これをどのように行うことができるかについてのアイデアはありますか?
macos - アプリに到達する前のOSXでのキーイベントフローのデバッグ
(control-apostrophe)
OS Xのアプリで特定のキーストロークが機能していないと報告するユーザーがいます。これは、他のマシンでも機能します。
ロギングを追加しましたが、アプリNSEvent
がkeyDownのを受信しません。
支援機器のユニバーサルアクセスを無効にしても、修正されませんでした。
システム環境設定のキーボードショートカットには、そのショートカットを使用するものはありません。
OSを介してキーストロークのパスをトレースして、アプリがそれを取得しない理由を見つける方法はありますか?これはdtraceでできることですか?
iphone - iphone: strace、dtruss、dtrace、または同等のもの?
strace
、dtruss
、またはdtrace
iPhone用のようなものがあるかどうか誰か知っていますか?
macos - Mac OS XのDTraceに動的に生成されたコードを通知することは可能ですか?
MonoのVMを拡張して、 DTraceと機器で使用できる情報を生成したいと思います。
DTraceがこれらのコードブロックに役立つ情報を生成できるように、Monoランタイムを変更して、動的に生成されたことをコードに登録または通知することを検討しています。
c - 存続期間の短いアプリケーションのトレース
C プログラムの関数内で費やされた時間を測定する DTrace スクリプトを作成しました。プログラム自体が実行され、いくつかのデータが出力されてから終了します。
問題は、プロセス ID を取得して DTrace を開始するのに時間がかかることです。
現時点では、DTrace を開始するのに十分な時間を与えるコード内に sleep() ステートメントがあります。情報を取得するためにコードを変更しなければならないということは、Dtrace の目的に反することになります...そうです。
基本的に私が求めているのは、プロセス ID が表示されるまで DTrace を待機させ、それに対してスクリプトを実行することです。
macos - DTraceからOSXアプリを隠すことは可能ですか?
DTraceによる検査から隠したいOSXアプリケーションを開発しています。私はP_LNOATTACH
旗を知っています、しかし私が読んだすべてはそれを回避する方法があることを私に教えてくれます。出来ますか?