1. 程式人生 > >linux 除錯工具總結

linux 除錯工具總結


“工欲善其事 必先利其器”現在將一些常見的除錯工具進行一下總結.

【1】
名稱:MEMWATCH 
功能:
    1、MEMWATCH 支援 ANSI C
    2、它提供結果日誌紀錄
    3、能檢測雙重釋放(double-free)
    4、錯誤釋放(erroneous free)
    5、沒有釋放的記憶體(unfreed memory)、
    6、溢位和下溢等等。
參考文獻:

      【1】:
http://blog.csdn.net/lengxingfei/archive/2006/08/09/1040800.aspx
【2】
名稱:YAMD
功能:
    1、查詢 c 和 c++ 中動態的、與記憶體分配有關的問題
參考文獻:
     【1】
http://www.cs.hmc.edu/~nate/yamd/
     【2】
http://www.ppsql.com/server/p262/J26232224_2.shtml


【3】
名稱:electric fence 
功能:
    1、檢測記憶體洩露
    2、檢查資料越界
    3、分配受保護的記憶體
參考文獻:
    【1】
http://book.opensourceproject.org.cn/embedded/oreillybuildembed/index.html?page=opensource/belinuxsys-chp-11-sect-4.html
    【2】
http://book.opensourceproject.org.cn/embedded/oreillybuildembed/opensource/belinuxsys-chp-11-sect-4.html

    【3】
http://www.ppsql.com/server/p262/J26232224_3.shtml

【4】
名稱:strace
功能:
    1、顯示使用者空間程式發出的系統呼叫
    2、顯示呼叫的引數和返回值

【5】
名稱:gdb
功能:
    1、啟動程式
    2、使程式能夠停止在指定檔案的指定位置
    3、檢視程式變數值
    4、改變程式執行期間的相關變數、路徑等


【6】
名稱:Oops 
功能: 顯示系統錯誤資訊
參考文獻:
    【1】
http://www.ibm.com/developerworks/cn/linux/sdk/l-debug/


【7】
名稱:mtrace
功能:
    1、檢測一些記憶體分配和洩漏的失敗等
參考文獻:
    【1】
http://www.vbaccelerator.com/home/VB/Code/Techniques/RunTime_Debug_Tracing/mTrace_bas.asp
    【2】
http://www.yuanma.org/data/2006/0612/article_789.htm
    【3】
http://www.mylinux.com.cn/HTML/1183705958487.html


【8】
名稱:binutil
說明:binutil為一個工具集合,包含如下的工具。
     addr2line  把程式地址轉換為檔名和行號。在命令列中給它一個地址和一個可執行檔名,它就會使用這個可執行檔案的除錯資訊指出在給出的地址上是哪個檔案以及行號。
     ar   建立、修改、提取歸檔檔案。歸檔檔案是包含多個檔案內容的一個大檔案,其結構保證了可以恢復原始檔案內容。
    as   主要用來編譯GNU C編譯器gcc輸出的彙編檔案,產生的目標檔案由聯結器ld連線。
    c++filt  聯結器使用它來過濾 C++ 和 Java 符號,防止過載函式衝突。
    gprof   顯示程式呼叫段的各種資料。
    ld   是聯結器,它把一些目標和歸檔檔案結合在一起,重定位資料,並連結符號引用。通常,建立一個新編譯程式的最後一步就是呼叫ld。
    nm   列出目標檔案中的符號。
    objcopy 把一種目標檔案中的內容複製到另一種型別的目標檔案中.
    objdump  顯示一個或者更多目標檔案的資訊。顯示一個或者更多目標檔案的資訊。使用選項來控制其顯示的資訊。它所顯示的資訊通常只有編寫編譯工具的人才感興趣。
    ranlib  產生歸檔檔案索引,並將其儲存到這個歸檔檔案中。在索引中列出了歸檔檔案各成員所定義的可重分配目標檔案。
    readelf  顯示ebf格式可執行檔案的資訊。
    size   列出目標檔案每一段的大小以及總體的大小。預設情況下,對於每個目標檔案或者一個歸檔檔案中的每個模組只產生一行輸出。
    strings  列印某個檔案的可列印字串,這些字串最少4個字元長,也可以使用選項-n設定字串的最小長度。預設情況下,它只打印目標檔案初始化和可載入段中的可列印字元;對於其它型別的檔案   它列印整個檔案的可列印字元,這個程式對於瞭解非文字檔案的內容很有幫助。
    strip   丟棄目標檔案中的全部或者特定符號。
    libiberty  包含許多GNU程式都會用到的函式,這些程式有: getopt, obstack, strerror, strtol 和 strtoul.
   libbfd  二進位制檔案描述庫.
   libopcodes  用來處理opcodes的庫, 在生成一些應用程式的時候也會用到它, 比如objdump.Opcodes是文字格式可讀的處理器操作指令.
功能:程式除錯、歸檔等
參考文獻:
       
http://man.chinaunix.net/linux/


【9】
名稱: Purify 
功能:記憶體檢查工具
參考文獻:
     
http://blog.csdn.net/haoel/archive/2003/12/16/2904.aspx


【10】
名稱:pc-lint
功能:C/C++的靜態程式碼檢測工具
參考文獻:
      【1】
http://dev.yesky.com/134/2593634.shtml


【11】
名稱:splint
說明:splint是一個動態檢查C語言程式安全弱點和編寫錯誤的程式
功能:
    1、空引用錯誤
    2、未定義的變數錯誤
    3、型別錯誤
    4、記憶體檢查
參考文獻:
    【1】
http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=splint&DokuWiki=e3b300af2d101a8bec5a4c805e678823
    【2】
http://www.splint.org/

【12】
名稱:boundercheck
功能:檢查記憶體洩露

【13】
名稱:valgrind
功能:
    1、檢查記憶體錯誤
參考文獻:
    
http://blog.donews.com/idlecat511/archive/2006/02/21/736877.aspx