cuốn sách gpt4 ai đã làm

linux — Dấu vết: Làm cách nào để xác định xem cuộc gọi hệ thống có gọi một cuộc gọi hệ thống khác không?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 23:25:24 25 4
mua khóa gpt4 Nike

"strace là một công cụ theo dõi cuộc gọi hệ thống, tức là một công cụ gỡ lỗi in ra dấu vết của tất cả các cuộc gọi hệ thống được thực hiện bởi một quy trình/chương trình khác." Điều gì sẽ xảy ra nếu cuộc gọi hệ thống hoạt động theo cách đệ quy hoặc một cuộc gọi hệ thống gọi một cuộc gọi hệ thống khác. Làm thế nào tôi có thể nhận được thông tin này?

Giải pháp khả thi - Chúng ta có thể tạo một biến thụt lề đơn giản được tăng lên khi chúng ta nhập lệnh gọi hệ thống và giảm đi khi chúng ta thoát ra. Bây giờ chỉ cần in số khoảng trắng "thụt lề" trước mỗi cuộc gọi. Vì vậy, chúng ta có thể có được một cái gì đó như thế này -

05:31:09.449402 getpriority(PRIO_PROCESS, 0) = 20
05:31:09.450514 ioctl(7, 0xc0186201, 0xbef86ac0) = 0
05:31:09.451817 ioctl(7, 0xc0186201, 0xbef86c10) = 0
05:31:09.524328 writev(4, [{"\4", 1}, {"ServiceManager\0", 15}, {"ServiceManager: addService(SMS, 0x15988)\n\0", 42}], 3 ) = 58
05:31:09.526862 futex(0x134ac, FUTEX_WAKE, 2147483647) = 0
05:31:09.527847 getpriority(PRIO_PROCESS, 0) = 20
05:31:09.528758 ioctl(7, 0xc0186201, 0xbef86ac0) = 0
05:31:09.529847 ioctl(7, 0xc0186201, 0xbef86c10) = 0

Strace hoặc công cụ khác đã cung cấp chức năng này chưa hay tôi có cần thay đổi mã nguồn để đạt được chức năng này không?

câu trả lời hay nhất

Các cuộc gọi hệ thống được định nghĩa là ranh giới giữa không gian kernel và không gian người dùng, do đó, mọi sự đệ quy ở đó đều xảy ra bên trong kernel và không thể bị chặn.

dấu vết Cách thức hoạt động của nó là nó gắn vào quy trình như một trình gỡ lỗi và cho phép nó chạy tự do trừ khi lệnh gọi hệ thống được kích hoạt, trong trường hợp đó các đối số và giá trị trả về sẽ được in. Nó không biết chuyện gì đang xảy ra bên trong kernel.

Về linux - Theo dõi: Làm cách nào để xác định xem một cuộc gọi hệ thống có gọi một cuộc gọi hệ thống khác không?, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/5339593/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress