首頁 > 套件與系統管理 > strace

strace:系統呼叫和訊號追蹤

strace 是 Linux 上一個強大的診斷工具,用於追蹤和記錄程序執行的系統呼叫 (syscall) 和接收的訊號。它能讓您詳細了解程序如何與核心互動,對於除錯、效能分析和安全審計非常有用。

概述

strace 可以追蹤特定命令的執行,或連接到已在執行的程序,即時輸出該程序的所有系統呼叫和訊號事件。這對於理解程序如何與核心互動至關重要,例如檔案 I/O、網路通訊和記憶體管理。

主要功能

  • 追蹤程序的系統呼叫和訊號
  • 顯示每個呼叫的參數、返回值和錯誤碼
  • 連接到正在執行的程序進行追蹤
  • 同時追蹤子程序
  • 過濾特定系統呼叫或訊號

主要選項

strace 提供了多種選項,可精確控制追蹤方式和輸出格式。

基本追蹤選項

輸出控制

過濾

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`strace` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

使用 strace 的各種範例。

簡單命令追蹤

strace ls

追蹤 `ls` 命令的系統呼叫。

將追蹤結果儲存到檔案

strace -o date_trace.log date

將 `date` 命令的系統呼叫儲存到 `date_trace.log` 檔案。

追蹤執行中的程序

strace -p 12345

連接到 PID 為 12345 的程序以追蹤系統呼叫。(PID 應替換為實際的程序 ID)

追蹤子程序

strace -f bash -c "echo Hello, strace!"

在 `bash` shell 中執行 `echo` 命令時,同時追蹤 `bash` 和 `echo` 的系統呼叫。

僅過濾特定系統呼叫

strace -e trace=open,read,write cat /etc/hosts

追蹤 `cat /etc/hosts` 命令使用的 `open`、`read`、`write` 系統呼叫。

檢查系統呼叫耗時

strace -T ls

同時顯示每個系統呼叫所花費的時間。

安裝

strace 可能未預設包含在大多數 Linux 發行版中。您可以使用以下命令進行安裝。

Debian/Ubuntu

sudo apt update && sudo apt install strace

使用 APT 套件管理器進行安裝。

CentOS/RHEL 7

sudo yum install strace

使用 YUM 套件管理器進行安裝。

Fedora/RHEL 8+

sudo dnf install strace

使用 DNF 套件管理器進行安裝。

提示與注意事項

strace 功能強大,但使用時需注意以下幾點。

效能影響

strace 會攔截程序的系統呼叫,因此可能對被追蹤程序的效能產生顯著影響,特別是對於 I/O 密集型程序。在生產環境中應謹慎使用。

輸出解讀

strace 的輸出可能非常龐大,建議使用過濾選項(-e)或將輸出儲存到檔案(-o)進行分析。有關特定系統呼叫的詳細資訊,可使用 `man 2 <syscall_name>` 命令查詢。

權限

若要追蹤其他使用者的程序或系統級別的行為,需要 `root` 權限。

與除錯工具的區別

strace 在系統呼叫層級工作,與 `gdb` 等除錯器不同,它無法直接操作程序內部的變數或函數呼叫,也無法查看堆疊追蹤。這兩種工具可以互補使用。


相同類別命令