linux之strace命令跟蹤程序的系統呼叫

2021-09-24 04:01:44 字數 791 閱讀 3762

作業系統的程序空間分為使用者空間和核心空間,作業系統核心直接執行在硬體上,提供裝置管理、記憶體管理、任務排程等功能,我們使用者空間不能直接呼叫,所以就有了系統呼叫(執行在使用者空間的程式向作業系統核心請求需要更高許可權執行的服務),系統呼叫提供使用者程式與作業系統之間的介面。使用者空間通過api請求核心空間的服務來完成其功能——核心提供給使用者空間的這些api, 就是系統呼叫。linux核心目前有300多個系統呼叫,詳細的列表可以通過syscalls手冊頁檢視。這些系統呼叫主要分為幾類:

檔案和裝置訪問類 比如open/close/read/write/chmod等

程序管理類 fork/clone/execve/exit/getpid等

訊號類 signal/sigaction/kill 等

記憶體管理 brk/mmap/mlock等

程序間通訊ipc shmget/semget * 訊號量,共享記憶體,訊息佇列等

網路通訊 socket/connect/sendto/sendmsg 等

其他strace:這個命令我們可以用來跟蹤使用者空間的系統呼叫,比如我們執行了乙個可執行檔案或者命令,我們只能看到結果,如果我們要知道這個程序系統呼叫,

我們可以使用這個命令,但是這個命令引數很多,我們一般只要記住下面幾個引數就行

引數意義如下

-c
統計和報告每個系統呼叫所執行的時間、呼叫次數和出錯次數等

-f
跟蹤當前程序及其通過fork系統呼叫所建立的子程序

-tt

我使用過的linux命令之strace

strace常用來跟蹤程序執行時的系統呼叫和所接收的訊號。在linux世界,程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置 比如讀取磁碟檔案,接收網路資料等等 時,必須由使用者態模式切換至核心態模式,通過系統呼叫訪問硬體裝置。strace可以跟蹤到乙個程序產生的系統呼叫,包括引數,返回值,執行消耗...

Linux效能測試 strace命令

1 功能說明 strace 命令是一種強大的工具 能夠顯示任何由使用者空間程式發出的系統呼叫 strace 顯示這些呼叫的引數並返回符號形式的值 strace 從核心接收資訊 而且無需以任何特別的方式來構建核心 strace 的每一行輸出包括系統呼叫名稱,然後是引數和返回值.下面記錄幾個常用opti...

linux命令之除錯工具strace的深入分析

參考 1 linux的strace命令 詳解 txt 新浪電子書可 2man strace 乙個基本上通用的 完整的用法 strace o output.txt t tt e trace all p 28979 上面的含義是 跟蹤28979程序的所有系統呼叫 e trace all 並統計系統呼叫的...