2012-12-03 36 views
17

dtruss dường như là một công cụ hữu ích để phân tích hành vi (sai) của các ứng dụng trên OS X. Điều tôi đã tìm thấy strace trên linux. Nhưng việc giải thích đầu ra của nó đòi hỏi một sự hiểu biết về các syscalls nó đề cập đến, và đôi khi các điều kiện lỗi mà họ có thể tạo ra. Lấy ví dụ dòngGiải thích đầu ra dtruss như “psynch_cvwait (...) = -1 Err # 316”

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

Tôi quan tâm đến một nguồn tài liệu mà sẽ cho phép tôi để tìm hiểu những gì syscall này được dự định để làm, những gì các thông số của nó biểu thị, và những gì mã lỗi này là viết tắt của. Khá giống như tôi mong đợi từ một manpage chức năng libc. Tôi yêu cầu tham chiếu mô tả các số và tương tự như trên syscalls với các lỗi và tương tự tương tự. Vì vậy, chỉ lấy dòng làm ví dụ cho loại đầu ra mà tôi muốn có thể hiểu được.

Tài liệu tham chiếu thích hợp để tìm hiểu về các hệ điều hành OS X như thế này?

Syscalls càng nhiều tham chiếu của bạn thì càng tốt.

Trả lời

4

Đây có thể là điểm khởi đầu tốt, chỉ để làm quen với thao tác dtrace. http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html

Theo như syscalls, bạn có thể bắt đầu tại đây. http://www.opensource.apple.com/source/xnu/xnu-1504.3.12/bsd/kern/syscalls.master

http://developer.apple.comhttp://www.opensource.apple.com là địa điểm để tìm thêm chi tiết.

Ở dạng sách, "Mac OS X Internals - Một phương pháp tiếp cận hệ thống" của Amit Singh là một điều hữu ích khác để có xung quanh.

11

Dựa trên an answer bởi Randy Howard, tôi đã xem XNU source code cho việc này. Tệp syscalls.master có danh sách tất cả các syscalls. tập tin mô tả chữ ký của psynch_cvwait như thế này:

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) 

mà không xuất hiện để có nhiều sự tương đồng với dtruss sản lượng trích dẫn trong câu hỏi. Việc thực hiện thực tế trong pthread_support.c là hữu ích hơn, mặc dù:

/* 
* 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) 

này ít nhất đưa ra một ý tưởng như những gì các đối số được in bởi dtruss đang có. Dường như thể thứ hai có thể là cấu trúc, các thành viên của nó bị xóa bởi tệp syscalls.master. Vì vậy, địa chỉ sẽ được sử dụng ít, và các thành viên thực tế dường như không được in bởi dtruss cả. Tinh chỉnh dtruss nó có lẽ có thể có được để có được ở các thành viên của cấu trúc đó, mặc dù tôi là xa chắc chắn về tài khoản này, và tự hỏi tại sao không ai đã làm như vậy được nêu ra.

Tôi ít may mắn khi cố gắng kết hợp bất kỳ ý nghĩa nào với đầu ra đó là Err#316. Thậm chí grepping toàn bộ mã nguồn XNU cả cho thập phân và đại diện hệ thập lục phân của 316, tôi thấy không có sự xuất hiện mà không bao gồm các chữ số khác nữa. Mã lỗi chắc chắn không được đề cập trong việc thực hiện psynch_cvwait chính nó, nhưng việc triển khai đó chuyển tiếp các mã lỗi từ các chức năng khác mà nó gọi. Một thực sự sẽ cần một trình gỡ lỗi hạt nhân để gỡ rối điều đó và theo dõi nguồn thực tế của giá trị đó.

Trên toàn bộ tôi bây giờ là một bước rất nhỏ gần hơn để hiểu được đầu ra dtruss, nhưng với rất nhiều công việc. Vì vậy, một tài liệu tham khảo thích hợp và bất kỳ cái nhìn sâu sắc vào nguồn của mã lỗi đó vẫn sẽ được đánh giá rất nhiều.

+1

Về lý do tại sao câu trả lời của Randy bị xóa: nó đã bị gắn cờ vì là câu trả lời chứa nhiều hơn một chút so với các liên kết bên ngoài. Các câu trả lời chỉ có liên kết thường bị cau mày và thường không liên quan đến câu hỏi được hỏi, nhưng câu hỏi này có liên quan. Tôi đã hủy xóa nó như là một kết quả. –

+0

Tôi rất vui vì bạn đã tiến bộ về vấn đề này. Có vẻ như bạn có thể phù hợp nhất để viết tài liệu này sớm. Lý do cho câu trả lời của tôi chủ yếu là liên kết là câu hỏi ban đầu đặc biệt là tìm kiếm tài liệu có thể hỗ trợ anh ta. Bị cau mày hay không, đó là những gì tôi đã cố gắng cung cấp. –

Các vấn đề liên quan