2012-12-03 6 views
17

dtrussは、OS Xのアプリケーションの(誤った)動作を分析するのに便利なツールです。 linuxのstraceしかし、その出力を解釈するには、それが参照するシステムコールと、生成されるエラー状態を理解する必要があります。例えば、私はそのパラメータが意味するもの、私はこのシステムコールを行うことを目的としているものを見つけることができるようになるドキュメントのソースに興味があり、どのようなこのエラーコードの略ライン"psynch_cvwait(...)= -1 Err#316"のようなdtrussの出力を解釈する

psynch_cvwait(0x6BE38D54, 0x100000100, 0x0)  = -1 Err#316 

してください。私はlibc関数のマンページから期待していたものとほとんど同じです。上記のと同様のシステムコールを記述する参照を求めています。上記のと同様ののエラーがあります。ですから、私が理解したいと思っている出力の一例として、その行を取ってください。

このようなOS Xのシステムコールについては、適切なリファレンスドキュメントは何ですか?

リファレンスがカバーするシステムコールが多いほど良いでしょう。

答えて

4

これは、dtraceの操作に精通するための出発点になります。 http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html

ここまでは、システムコールのように始めることができます。 http://www.opensource.apple.com/source/xnu/xnu-1504.3.12/bsd/kern/syscalls.master

http://developer.apple.comおよびhttp://www.opensource.apple.comは、詳細を見つける場所です。

書籍形式では、「Mac OS X Internals - A Systems Approach」(Amit Singh著)がもう1つあります。

11

an answerによってRandy Howardに基づいて、私はXNU source codeを見ました。ファイルsyscalls.masterには、すべてのシステムコールのリストがあります。質問に引用されdtruss出力と多くの類似点を持っているように見えていません

uint32_t 
psynch_cvwait(
    user_addr_t cv, 
    uint64_t cvlsgen, 
    uint32_t cvugen, 
    user_addr_t mutex, 
    uint64_t mugen, 
    uint32_t flags, 
    int64_t sec, 
    uint32_t nsec) 

:このファイルは、このようなpsynch_cvwaitの署名を記述する。 pthread_support.cでの実際の実装は、しかし、より有用である:

/* 
* psynch_cvwait: This system call is used for psynch cvar waiters to block in kernel. 
*/ 
int 
psynch_cvwait(__unused proc_t p, 
       struct psynch_cvwait_args * uap, 
       uint32_t * retval) 

これは、少なくともdtrussによって印刷された引数が何であるかにとアイデアを提供します。 2番目のものが構造体であるかのように見え、そのメンバーはsyscalls.masterファイルで記述されます。したがって、住所はほとんど使用されず、実際のメンバーは明らかにdtrussによって印刷されません。 dtrussを調整すると、おそらくその構造のメンバーを得ることは可能かもしれませんが、私はこのアカウントでははっきりしていません。

私はそれほど意味がありません。Err#316の出力と結びついています。 316の10進表記と16進表記の両方のXNUソースコード全体をグロッピングしても、他の桁も含まれていないことはわかりませんでした。エラーコードは確かにpsynch_cvwaitの実装で言及されていませんが、その実装はそれが呼び出す他の関数からエラーコードを転送します。カーネルデバッガが本当に必要なので、それを解き、その値の実際のソースをトレースする必要があります。

私は全体的にはdtrussの出力を理解するための非常に小さな一歩ですが、多くの作業があります。したがって、適切な参照ドキュメントと、そのエラーコードのソースに対する洞察は、依然として非常に高く評価されます。

+1

なぜランディの答えが削除されたのか:それは外部リンクよりも少しだけで構成される回答であることが示されました。リンクのみの回答は一般的には尋ねられ、通常質問された質問には関連していませんが、これは関連性がありました。私は結果としてそれを元に戻しました。 –

+0

あなたはこれについて進歩したことをうれしく思っています。すぐにこの文書を書くのに最適かもしれないように思えます。私の答えが主にリンクされている理由は、元の質問が特に彼を助けるかもしれない文書を探していたからです。私が提供しようとしていたのは、怒っているかどうかではありません。 –

関連する問題