19

dtrussOS Xでのアプリケーションの(誤)動作を分析するための便利なツールのようです。Linuxで私の最愛の人に近いものを見つけましたstrace。ただし、その出力を解釈するには、それが参照するシステムコールを理解する必要があり、場合によっては、それらが生成する可能性のあるエラー状態を理解する必要があります。たとえば、次の行を見てください

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

このシステムコールが何を意図しているのか、そのパラメータが何を意味しているのか、そしてこのエラーコードが何を表しているのかを知ることができるドキュメントのソースに興味があります。libc関数のマンページに期待するのとほとんど同じです。上記および同様のエラーを含む、上記および同様のシステムコールを説明するリファレンスを求めています。ですから、私が理解できるようにしたい出力の種類の例として、この行を取り上げてください。

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

参照がカバーするシステムコールが多いほど、優れています。

4

3 に答える 3

13

Randy Howardの回答に基づいて、このXNU ソース コードを調べました。このファイルには、すべてのシステムコールのリストが含まれています。そのファイルには、次のような署名が記述されています。syscalls.masterpsynch_cvwait

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)

dtrussこれは、質問で引用されている出力とあまり似ていないようです。ただし、実際の実装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 ソース コード全体を grep しても、他の数字も含まれていないものは見つかりませんでした。エラー コードは、それ自体の実装では確かに言及されていませんpsynch_cvwaitが、その実装は、それが呼び出す他の関数からエラー コードを転送します。それを解きほぐし、その値の実際のソースを追跡するには、カーネルデバッガーが本当に必要です。

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

于 2013-04-22T13:57:25.470 に答える
6

これは、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は、詳細を見つけるための場所です。

Amit Singh 著の「Mac OS X Internals -- A Systems Approach」という本も、手元に置いておくと便利です。

于 2013-03-14T20:11:22.097 に答える