問題タブ [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.
dtrace - DTrace スクリプトからの C 関数の呼び出し
DTraceは印象的で強力なトレース システムであり、元々は Solaris からのものですが、FreeBSD と Mac OSX に移植されています。
DTrace は、AWK や C とは異なり、D と呼ばれる高級言語を使用します。次に例を示します。
コマンド ラインを使用するsudo dtrace -q -s <name>.d <pid>
と、そのプロセスから発生したすべての IO がログに記録されます。
私の質問は、DTrace スクリプトからカスタム C 関数を呼び出して、トレース中にそのトレース データで高度な操作を行うことができるかどうか、およびその方法です。
macos - Mac OS X で DTrace をビルドするにはどうすればよいですか?
ここのアドバイスを使用して、Xcode プロジェクトで dtrace ターゲットを構築しようとしています。
http://osx86.boeaja.info/2009/10/building-xnu-kernel-on-snow-leopard/
しかし、次のようになります: libproc.m:24:49: エラー: CoreSymbolication/CoreSymbolication.h: そのようなファイルまたはディレクトリはありません
CoreSymbolication がプライベート フレームワークであることは理解していますが、dtrace をビルドするには、Apple がこのヘッダーをどこかで利用できるようにする必要があります。dtrace をビルドするために必要なファイルを教えてもらえますか?
arrays - DTraceで連想配列をどのように印刷しますか?
質問はそれをかなり要約しています。「dtrace'連想配列を印刷する'」は、グーグルヒットが1つだけあり、同様の検索も同様に役に立ちません。
編集:
集計を使用する場合でも、エントリを削除できるかどうかはわかりません。私のアプリケーションでは、次のようなことができる必要があります。
集計全体をクリアできることは知っていますが、1つのエントリについてはどうでしょうか。
アップデート:
私はOSXでこれを行っており、アプリケーションは特定のプロセスによって開かれたすべてのファイル記述子を追跡するため、256個のパス名の配列を持つことができました。
最悪だ。もっといいものが欲しいです。
.net - .Netに相当するdtraceはありますか
dtraceに相当する.Netまたはアナログはありますか?
macos - Mac OS X に dtrace ustack() ヘルパーはありますか?
Mac OS X で dtrace ustack ヘルパーを Python やその他のインタープリター言語に使用する機会があるかどうか疑問に思っていました。ustack にバッファー用の余分なメモリを与えるときに、OpenSolaris の python と php が何をしているのかを理解できることを私は知っています。これはMac OS Xで何とか可能ですか?
よろしく雷鳥
macos - ルート以外の権限でtracedコマンドを実行するようにdtraceを取得するにはどうすればよいですか?
strace
OS XにはLinuxがありませんが、Linuxのdtrace
方がはるかに優れていると思われます。
ただし、個々のコマンドで単純なトレースを実行する機能がありません。たとえば、Linuxでは、strace -f gcc hello.c
すべてのシステムコールをキャプチャするように記述できます。これにより、コンパイラがプログラムをコンパイルするために必要なすべてのファイル名のリストが表示されます(優れたメモ化スクリプトはこのトリックに基づいて構築されています)
Macにメモ化を移植したいので、なんらかのが必要ですstrace
。私が実際に必要としているのは、gcc
読み取りと書き込みを行うファイルのリストなので、必要なのはもっとですtruss
。案の定dtruss -f gcc hello.c
、ある程度同じ機能を取得できますが、コンパイラはルート権限で実行されます。これは明らかに望ましくありません(セキュリティ上の大きなリスクは別として、a.out
ファイルがルートによって所有されているという問題があります:-)
次に試してみdtruss -f sudo -u myusername gcc hello.c
ましたが、これは少し違和感があり、とにかく機能しません(a.out
この時点ではファイルがまったく取得されないので、理由はわかりません)
その長い話はすべて、私の最初の質問を動機付けようとしています。Linuxの場合と同じように、通常のユーザー権限でコマンドを実行するにはどうすればよいですか。dtrace
strace
編集:これを行う方法を疑問に思っているのは私だけではないようです:質問#1204256は私のものとほとんど同じです(そして同じ次善のsudo答えがあります:-)
virtual-memory - ページがディスクからフォールトインされたときに起動する(OS X)dtraceプローブはどれですか?
ページの障害に関するドキュメントを作成していて、具体的な数値を使用できるようにしようとしているので、12 * 1024*1024バイトのデータを読み取る簡単なプログラムを作成しました。簡単:
そうです、それはファイル全体を調べて読み取ります。問題は、このプロセス中に1536回起動するdtraceプローブが必要なことです(12M / 8k)。すべてのfbt:mach_kernel:vm_fault *:プローブとすべてのvminfo :::プローブを数えても、500に到達しないため、適切なプローブが見つからないことがわかります。
ページがディスクからフォールトインされたときに起動するdtraceプローブをどこで見つけることができるか知っている人はいますか?
アップデート:
stdio関数でインテリジェントなプリフェッチが行われていることが問題であるという偶然の機会に、私は次のことを試みました。
このバージョンの実行にははるかに長い時間がかかります(リアルタイムで42秒、そのうちの10秒はユーザーで、残りはシステム時間でした-ページフォールトだと思います)が、それでも予想される5分の1のフォールトが生成されます。
不思議なことに、時間の増加はループのオーバーヘッドとキャスト(charからint)によるものではありません。これらのアクションだけを実行するコードバージョンは.07秒かかります。
dtrace - DTrace: メモリ バッファを出力する方法
特定のファイルに対して行われたすべての pwrite(2) 呼び出しをトレースし、バイトごとに書き込まれるすべてのバッファーを出力する必要があります。期待されるデータはASCII文字列形式ではないため、使用できません:
私はcopyin(arg1、arg2)について学びましたが、それは私にvoid *を与え、私が見つけたすべての例はstringofを呼び出すことによって再び文字列に変換します。
私が必要とするのは、コピーされたバッファ内のすべてのバイトをどういうわけか表示することです。助言がありますか?
ありがとうインソ。
apache2 - FreeBSD 上の Apache で dtrace を有効にする
こんにちは、オペレーティング システムとして freeBSD を使用しています。Apache バージョン 2.2.16 がインストールされています。この dtrace を有効にしたいのですが、どうすればよいですか。よろしくお願いします。
visual-studio - Xcode インスツルメンツ - Windows の同等物?
Xcode の Instruments は、私を物理的に感じさせてくれます。それらは DTrace に基づいています (Windows にはいくつかの緩やかな同等物があります) が、Apple がそれらのために作成した GUI により、日常的に使用できるようになります。
Visual Studio には、競合するツールがないようです。これは、多くのコマンド ライン モジョとテキスト ダンプの解析を必要とするプロファイラーを試みています。Compuware の一連のツールは、比較するとひどいものです。
Xcode のインストゥルメントのパワーと使いやすさを備えたものはありませんが、Windows 以外にはありませんか?