linux中隨手可得的測試、調試、效能檢驗工具

來源:互聯網
上載者:User

linux中隨手可得的測試、調試、效能檢驗工具 原定標題是“linux內建的測試、調試、效能工具”,不過並不恰當,比如本文要提到的gdb,很多Linux發行版中都提供了它,但畢竟不是Linux的必要組成部分,只是對與大多數Linux使用者隨手可得罷了。合理組合使用這些工具可以滿足更複雜的要求,並寫成測試指令碼,能為測試提供很大的方便。本文不涉及具體的指令碼編寫,也不涉及與網路相關的命令如netstat和tcpdump。  為了方便閱讀,用橫線把內容進行分割,並且每個底線下對這部分主要內容進行提示。  對於1~6這幾個命令,單獨使用時看上去很簡單,但當它們結合重新導向和Regex從而構成更複雜的功能甚至是自動化指令碼時,才能發揮其真正威力。  cmp和diff可以用於版本控制,比較兩個版本檔案的不同之處,也可以用於比較程式產生的輸出。 1.cmp  逐位元組比較兩個檔案,輸出。無選項則輸出第一個不同的地方。  常用選項:  -l 輸出所有不同的位元組,並顯示位元組數(十進位)和每個不同的不同位元組(八進位)。例如,如果第3個位元組file1.txt中是八進位151,flie2.txt中是12,則顯示:    3 151  12 2.diff   逐行比較兩個檔案;如果指定的是目錄,則比較目錄下的同名檔案。   輸出為:檔案1中的行數+格式提示+檔案2中的行數,其中格式提示為a、c、d,對應add、change、delete。   diff的退出值有特定含義, 0 表示沒有不同,1 表示找到不同處,2 表示出錯。   常用選項:     -y --side-by-side 以兩列輸出。這時用 |標註二者不同的行,<標註後者比前者少一行,>標註前者比後者少一行。此時還可以加上下面的選項:      -W NUM --width=NUM 輸出最多列印 NUM (預設 130) 列。      --left-column 僅輸出共有行的左側列。     -c  -C NUM  --context[=NUM]  輸出 NUM (預設 3) 行複製的上下文。兩個檔案的全文都會顯示。     -u  -U NUM  --unified[=NUM]  輸出 NUM (預設 3) 行合并的上下文。兩個檔案相同的部分只顯示一次。    -ruN 產生patch檔案,格式為diff -ruN file1 file2 >patch.dat,這時使用patch file1 patch.dat就能把file1的內容更新到與file2一致了。    sort、sum、wc同樣可以對檔案和輸出按需要進行處理。對於能夠把stdin重新導向到檔案中的Linux來說,對輸出的處理和對檔案的處理是一樣的。 3.sort   按字母序輸出各行。這個命令可以同時處理多個檔案。   常用選項:     -u 去除重複行     -r  降序輸出     -n 按數字序排序,(這樣2才不會排到10後面)     -t    按某個分隔字元分隔,這時可以用-k指定列數 4.sum   計算檔案校正和以及佔用的塊(block)數。校正和演算法和block的大小可以根據選項設定。  5.wc  輸出檔案的行數、字(word)數、位元組數。如果多於一個檔案還將輸出總行數。   常用選項:     -c   輸出位元組數     -m  輸出字元數     -l  輸出行數     -w  輸出字(word)數  6.grep   從文本中搜尋符合Regex的內容並顯示。這裡就不提Regex是多麼的強大了,其規則可以單獨寫成一篇博文,並且很多人已經這麼做過了。下面是一些用法啟發,看完之後會讓人覺得,原來這個“搜尋”的需求的具體化如此多樣。例子出於《程式設計實踐》:   哪些檔案裡用到了類Regexp?  %grep Regexp *.java   這個類的實現在哪個檔案?     %grep 'class.*Regexp' *.java   檔案中有多少空行?        %grep '.' *.c++ |wc    已耗用時間的統計和測定:time和gprof 7.time  用法是$time 可執行檔/命令  顯示程式啟動並執行總時間、使用者時間和系統時間。  對於一個執行時間很短的程式,已耗用時間可能顯示為0。  因為並不是由程式執行本身收集的,如果time命令被停止或被換出記憶體,顯示的時間可能大於真實的時間。 8.gprof  統計程式運行時各個函數的已耗用時間和被調用的次數。這對代碼調優很有協助,通過這個統計,可以找到佔用時間比率大、調用次數多的函數,對齊進行最佳化,這樣可以提升程式的效能。而對於較少執行而且佔用時間不多的函數,即使存在最佳化的可能性,也不必費心考慮最佳化方案,因為對它的最佳化對效能提升不大。  如果需要gprof,在gcc時需要增加-pg選項,這時會產生一個gmon.out檔案。   代碼查錯:gcc -Wall選項、lint9.gcc -Wall  之所以把這個gcc選項也列上,主要是其作用容易被人忽略。Writing Solid Code上援引Peter Lynch——據說是80年代最好的合股投資公司管理者——的話:投資者與賭徒之間的區別在於投資者利用每一次機會,無論它是多麼小,去爭取利益;而賭徒則只靠運氣。作者建議把這句話應用於編程,選擇編譯器的所有可選警告選項,並視之為無風險高償還的程式投資。不要問“應該使用這一警告設施嗎?”而是問:“為什麼不使用這一警告設施呢?”把所有警告選項都開啟,除非有極好的理由才不這麼做。 10.lint  最初lint用於檢查C語言中不可移植的代碼,而現在已經不只是一個可移植性檢查程式,還可以檢查出代碼中那些雖然可移植並且完全合乎文法但很有可能是錯誤的特性。  lint有很多版本,Linux下可以使用splint,通過apt-get安裝。    較綜合的調試:gdb11.gdb  gdb是一個較為綜合的調試工具,提供了諸如斷點、變數監測和設定、訊號、查看函數堆棧、逐步執行等功能,這裡不做詳細介紹,相關的博文很多,可以進行參考,我以前也做了個記錄:gdb調試命令。   其他:strace12.strace  strace可以跟蹤到一個進程產生的系統調用,包括參數,傳回值,執行消耗的時間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.