使用truss、strace或ltrace診斷軟件的"疑難雜症"

進程沒法啓動,軟件運行速度忽然變慢,程序的"Segment Fault"等等都是讓每一個Unix系統用戶頭痛的問題,本文經過三個實際案例演示如何使用truss、strace和ltrace這三個經常使用的調試工具來快速診斷軟件的"疑難雜症"。html

truss和strace用來 跟蹤一個進程的系統調用或信號產生的狀況,而 ltrace用來 跟蹤進程調用庫函數的狀況。truss是早期爲System V R4開發的調試程序,包括Aix、FreeBSD在內的大部分Unix系統都自帶了這個工具;而strace最初是爲SunOS系統編寫的,ltrace最先出如今GNU/Debian Linux中。這兩個工具如今也已被移植到了大部分Unix系統中,大多數Linux發行版都自帶了strace和ltrace,而FreeBSD也可經過Ports安裝它們。函數

你不只能夠從命令行調試一個新開始的程序,也能夠把truss、strace或ltrace綁定到一個已有的PID上來調試一個正在運行的程序。三個調試工具的基本使用方法大致相同,下面僅介紹三者共有,並且是最經常使用的三個命令行參數:工具

1
2
3
-f :除了跟蹤當前進程外,還跟蹤其子進程。
-o file :將輸出信息寫到文件file中,而不是顯示到標準錯誤輸出(stderr)。
-p pid :綁定到一個由pid對應的正在運行的進程。此參數經常使用來調試後臺進程。
相關文章
相關標籤/搜索