Linux C/C++常用工具彙總
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
相關文章
- 常用工具彙總
- C++知識點大彙總C++
- js 常用工具方法彙總JS
- Linux C++ 開發7 - GDB常用命令彙總(你想了解的都在這)LinuxC++
- Go常用工具和開源專案彙總Go
- 【C++】 C++知識點總結C++
- Linux C++ IDELinuxC++IDE
- Linux C/C++呼叫mongDBLinuxC++
- C++內嵌彙編 教程1C++
- C/C++指標總結C++指標
- C++ const 總結C++
- C++:字串總結C++字串
- C++11特性總彙C++
- Linux下C++ daemonLinuxC++
- Linux基本運維彙總Linux運維
- Linux 效能分析工具彙總Linux
- C語言知識彙總 | 00-C語言知識彙總目錄C語言
- C++之【操作符】彙總 &【不能被過載的運算子】小記C++
- C++基礎總結C++
- C++除錯總結C++除錯
- c++學習總結C++
- c語言指標彙總C語言指標
- Linux常用工具Linux
- linux c++ pprof的使用LinuxC++
- linux 故障解決方法彙總Linux
- linux 基礎知識彙總Linux
- Linux之系統故障彙總Linux
- linux 常用命令彙總Linux
- Linux彙總基本命令【1】Linux
- 1-Linux起步彙總貼Linux
- Linux C++ 開發1 - 搭建C++開發環境LinuxC++開發環境
- C++設計模式 - 總結C++設計模式
- Linux下C++ libtorrent庫使用LinuxC++
- linux環境安裝——整理彙總Linux
- Linux terminal 終端快捷鍵彙總Linux
- 【Linux】CentOS操作和問題彙總LinuxCentOS
- 組合語言-019(彙編程式與c\c++相互呼叫)組合語言C++
- linux檔案目錄結構彙總!Linux學習Linux
- 高質量C/C++程式設計指南總結(八)—— C++高階特性C++程式設計