Linux C/C++常用工具彙總

potato123發表於2010-03-22

1.ltrace/strace:ltrace用於跟蹤庫呼叫的情況,strace用於系統呼叫的情況,strace是ltrace的一個功能子集,
使用方式:
    strace/ltrace [options] -p {PID}   //attach到某個程式上
    strace/ltrace [options] {command}  //執行某個程式並用ltrace跟蹤
常用的選項[options]有
   -c            呼叫函式彙總統計
   -r            列印出與上一次系統呼叫的時間間隔
   -T            列印出每次系統呼叫
   --l={library} 僅跟蹤指定的庫(ltrace專用)
   -S            strace模式(ltrace專用)
關於ltrace/strace/gdb的工作原理,可以參見:http://javadino.blog.sohu.com/101228695.html
2.gdb:C 和C++ 程式的強力偵錯程式,非常強大
使用方式:
   gdb {program} 除錯program
   gdb {program} -c {coredumpfile} 除錯program,coredumpfile是coredump檔案
   gdb -p {pid}  除錯程式pid
對於查詢問題而言(後兩種),進入後輸入where可以檢視當前程式執行到哪裡(最常用的選項)
gdb的具體使用可以參見:http://www.linuxeden.com/html/develop/20070514/26819.html
3.lsof:lsof=list opened files,用於列出被開啟的檔案,需要注意的是,linux中基本上很多都是檔案,如socket、IO裝置等
使用方式:
   lsof {filename} 顯示開啟檔案filename的程式
   lsof -p {pid} 顯示程式開啟了哪些檔案
   lsof -c {program} 顯示program當前開啟了哪些檔案
   lsof +d {dir} 顯示dir目錄下被程式開啟的檔案
   lsof +D {dir} 與+d相同,但會搜尋子目錄
   lsof -U 顯示Unix Socket
   lsof -i [4/6] [protocol][@hostname|hostaddr][:service|port] 顯示符合條件的程式
     [4/6] 是IPv4還是IPv6
     [protocol] tcp或udp
     [@hostname|hostaddr] 主機名或IP地址
     [:service|port] 服務(/etc/service中定義)或埠
     譬如 lsof -i :22 顯示當前使用22埠的程式
4.objdump:用來檢視elf(execute and linking format)格式檔案中的內容
使用方式:
   objdump [options] {filename}
選項:
   -f 顯示elf各section(段)的描述資訊
   -d 反彙編可執行section(譬如text正文段資訊)
   -D 反彙編所有的段(資訊太多,不如-d有用)
   -r 顯示需要重定位的符號(一般對.o檔案有效)
   -R 顯示需要重定位動態庫符號(一般對加了動態連線庫連線的可執行程式有效)
   -t 顯示符號表
   -T 顯示所有動態庫的符號表(.so動態庫)
5.tcpdump:跟蹤網路中傳輸的包,需要注意的是,tcpdump工作在網路混編模式下,即其不僅能跟蹤目的地址為本機IP或廣播/組薄地址的資料包(網路卡預設工作模式),而且可以跟蹤傳送給其他主機的資料包(混編模式,不過濾本機不能處理的包)(與乙太網的匯流排結有關,區域網內的資料包會傳送給所有的主機,乙太網卡預設會過濾掉所有本機無法處理的包)。
使用:參見http://www.linux521.com/2009/newbie/200907/7196.html
6.netstat:netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計資料
使用方式:
   tcpdump [options]
選項:
   -r 顯示關於路由表的資訊
   -a 顯示所有的連結資訊
7.top/vmstat/iostat:用於顯示系統資源的佔用情況
iostat:報告中央處理器(CPU)統計資訊和整個系統、介面卡、tty 裝置、磁碟和 CD-ROM 的輸入/輸出統計資訊。
參考:http://www.cublog.cn/u/27493/showart_498055.htm、http://study.chyangwa.com/IT/AIX/aixcmds3/iostat.htm
vmstat:報告關於核心執行緒、虛擬記憶體、磁碟、陷阱和 CPU 活動的統計資訊。
參考:http://www.eygle.com/digest/2007/07/vmstat_man_page.html

相關文章