strace 通過 ptrace 攔截進程系統調用,是診斷「啟動失效、性能驟降、段錯誤」的利器。常用參數:-f 跟蹤子進程、-o file 輸出文件、-p PID 附加到運行進程、-e expr 過濾調用、-D 顯示相對耗時。
truss -f -o clint.truss clint 末尾顯示:
stat("/root/.clint/plugins", ...) ERR#2 'No such file or directory'
SIGNAL 11
缺少插件目錄導致段錯誤。依次創建 /root/.clint/plugins、/root/.clint/plugins/python 即正常運行。
truss -f -D -o vim.truss vim 關注耗時列,發現反復的 socket()、connect() 失敗佔據絕大多數時間,原為配置錯誤嘗試連接不存在的腳本服務器。修正配置後秒開。
strace/truss:系統調用級ltrace:庫函數調用級三者核心參數一致(-f -o -p),掌握其一即可觸類旁通。