linux調試工具

1. 使用printf調試

#ifdef DEBUG

Printf(“valriable x has value = %d\n”, x)

#endif

然後在編譯選項中加入-DDEBUG

更復雜的調試應用如:

#define BASIC_DEBUG 1

#define EXTRA_DEBUG 2

#define SUPER_DEBUG 4

#if (DEBUG &EXTRA_DEBUG)

       printf …

#endif

在這種情況下如果設置編譯器標誌爲-DDEBUG=5,將啓用BASIC_DEBUG和SUPER_DEBUG。 標誌-DDEBUG=0將禁用所有的調試信息,也可以在程序中添加如下語句:

#ifndef DEBUG

#define DEBUG 0

#endif

2.使用gdb調試

Gcc編譯的時候要加上-g選項,讓編譯器在程序中添加額外的調試信息。如果正式發佈,這些調試信息可以使用strip命令刪除。

Gdb:

Backtrace棧跟蹤

3. 程序靜態分析工具splint

splint功能:

常識性測試併產生一些警告信息。它可以檢測未經賦值的變量使用,函數的參數未使用等異常情況。

4. 程序執行性能分析工具prof/gprof

顯示執行所花費的時間具體都用在什麼操作上。

5. 內存調試

ElectricFence函數庫和valgrind可以用來檢查動態內存分配的一些問題,包括內存泄漏。





Linux下的調試工具

 

隨着XP的流行,人們越來越注重軟件的前期設計、後期的實現,以及貫穿於其中的測試工作,經過這個過程出來的自然是高質量的軟件。甚至有人聲稱XP會淘汰調試器!這當然是有一定道理的,然而就目前的現實來看,這還是一種理想。在日常工作中,調試工具還是必不可少的。在Linux下,調試工具並非只有gdb,還有很多其它調試工具,它們都各有所長,側重方面也有所不同。本文介紹幾種筆者常用的調試工具:

 

1.         mtrace

linux下開發應用程序,用C/C++語言的居多。內存泄露和內存越界等內存錯誤,無疑是其中最頭疼的問題之一。glibc爲解決內存錯誤提供了兩種方案:

 

一種是hook內存管理函數。hook內存管理函數後,你可以通過記下內存分配的歷史記錄,在程序終止時查看是否有內存泄露,這樣就可以找出內存泄露的地方了。你也可以通過在所分配內存的首尾寫入特殊的標誌,在釋放內存時檢查該標誌是否被破壞了,這樣就可以達到檢查內存越界問題的目的。

 

另外一種方法更簡單,glibc已經爲第一種方案提供了默認的實現,你要做的只是在特定的位置調用mtrace/muntrace兩個函數,它們的函數原型如下:

       #include <mcheck.h>

       void mtrace(void);

void muntrace(void);

你可能會問,在哪裏調這兩種函數最好?這沒有固定的答案,要視具體情況而定。對於小程序來說,在進入main時調用mtrace,在退出main函數時調用muntrace。對於大型軟件,這樣做可能會記錄過多的信息,分析這些記錄會比較慢,這時可以在你所懷疑代碼的兩端調用。

 

另外,還需要設置一個環境變量MALLOC_TRACE,它是一個文件名,要保證當前用戶有權限創建和寫入該文件。glibc的內存管理器會把內存分配的歷史信息寫入到MALLOC_TRACE指定的文件中。

 

程序運行完畢後,使用mtrace工具分析這些內存分配歷史信息,可以查出內存錯誤的位置(mtraceglibc-utils軟件包裏)

 

2.         strace

在編程時,檢查函數的返回值是一種好習慣。對於像glibc等標準C的函數,光檢查返回值是不夠的,還需要檢查errno的值。這樣的程序往往顯得冗長,不夠簡潔。同時也可能是出於偷懶的原因,大多數程序裏並沒有做這樣的檢查。

 

這樣的程序,一旦出現錯誤,用調試器一步一步定位錯誤,然後想法查出錯誤的原因,也是可以的,不過比較麻煩,對調試器來說有些大材小用,不太可取。這時,用strace命令可能會更方便一點。它可以顯示各個系統調用/信號的執行過程和結果。比如文件打開出錯,一眼就看出來了,連錯誤的原因(errno)都知道。

 

3.         binutil

binutil是一系列的工具,你可能根本不知道它們的存在,但是沒有它們你卻寸步難行。Binutil包括下列工具:

  • ld - the GNU linker.
  • as - the GNU assembler.
  • addr2line - Converts addresses into filenames and line numbers.
  • ar - A utility for creating, modifying and extracting from archives.
  • c++filt - Filter to demangle encoded C++ symbols.
  • gprof - Displays profiling information.
  • nlmconv - Converts object code into an NLM.
  • nm - Lists symbols from object files.
  • objcopy - Copys and translates object files.
  • objdump - Displays information from object files.
  • ranlib - Generates an index to the contents of an archive.
  • readelf - Displays information from any ELF format object file.
  • size - Lists the section sizes of an object or archive file.
  • strings - Lists printable strings from files.
  • strip - Discards symbols.
  • windres - A compiler for Windows resource files.

其中部分工具對調試極有幫助,如:

你可以用objdump反彙編,查看目標文件或可執行文件內部信息。

你可以用addr2line把機器地址轉換到代碼對應的位置。

你可以用nm查看目標文件或可執行文件中的各種符號。

       你可以用gprof分析各個函數的使用情況,找出性能的瓶頸所在(這需要加編譯選項)

 

4.         ld-linux

現在加載ELF可執行文件的工作,已經落到ld-linux.so.2頭上了。你可能會問,這與有調試程序有關係嗎?有的。比如,在linux中,共享庫裏所有非static的函數/全局變量都是export的,更糟的是C語言中沒有名字空間這個概念,導致函數名極易衝突。在多個共享庫中,名字衝突引起的BUG是比較難查的。這時,你可以通過設置LD_ DEBUG環境變量,來觀察ld-linux.so加載可執行文件的過程,從中可以得到不少幫助信息。LD_ DEBUG的取值如下:

  • libs        display library search paths
  • reloc       display relocation processing
  • files       display progress for input file
  • symbols     display symbol table processing
  • bindings    display information about symbol binding
  • versions    display version dependencies
  • all         all previous options combined
  • statistics  display relocation statistics
  • unused      determined unused DSOs
  • help        display this help message and exit

5.         gdb

對於真正意義的調試器來說,gdblinux下是獨一無二的。它有多種包裝,有字符界面的,也有圖形界面的,有單獨運行的,也有集成到IDE中的。gdb功能強大,圖形界面的gdb容易上手一點,但功能無疑受到了一些限制,相信大部分高手還是願意使用字符界面的。Gdb太常用了,這裏不再多說。

 

6.         gcc/boundschecker

相信很多人用過win32下的BoundsChecker(Compuware公司)Purify(IBM公司)兩個工具吧。它們的功能實在太強大了,絕非能通過重載內存管理函數就可以做到,它們在編譯時插入了自己的調試代碼。

 

gcc也有個擴展,通過在編譯時插入調試代碼,來實現更強大的檢查功能。當然這要求重新編譯gcc,你可以到http://sourceforge.net/projects/boundschecking/ 下載gcc的補丁。它的可移植性非常好,筆者曾一個ARM 平臺項目裏使用過,效果不錯。

 

7.         valgrind

最好的東西往往最後才見到。Valgrind是我的最愛,用習慣了,寫的程序不在valgrind下跑一遍,就像沒有寫單元測試程序一樣,有點放心不下。它有BoundsChecker/Purify的功能,而且速度更快。

 

有點遺憾的是valgrind目前只支持x86平臺,當然,這對大多數情況已經足夠了。

 

你可以到http://valgrind.org/ 下載最新版本。




Linux 平臺上的C語言調試工具!

Debugging Tools for C on Linux Platform
http://www.linuxgazette.com/node/view/8755

Submitted by Nikhil Bhargava on Tue, 02/17/2004 - 14:37. Articles | General Interest
This article talks about debugging tools for applications in C on Linux platforms. Most of the tools are freely available on all major platforms with very wide user support. The tools help in static analysis of code as well as assist in dynamic evaluation of code.

Please note that tools listed here are suggestions of the author. This list is not a standard one. Changes have to be done in it depending upon the nature, scope and details of the application to be developed.
Debugging Tools


1. Dmalloc http://dmalloc.com/

The debug memory allocation or Dmalloc library is a freeware debugging tool which has been specially designed as a drop in replacement for the system's malloc, realloc, calloc, free and other memory management routines while providing powerful debugging facilities configurable at runtime. It makes changes during compile time and donot add runtime changes in binary. These facilities include such things as memory-leak tracking, fence-post write detection, file/line number reporting, and general logging of statistics. The library is reasonably portable having been run successfully on at least the following operating systems: AIX, BSD/OS, DG/UX, Free/Net/OpenBSD, GNU/Hurd, HPUX, Irix, Linux, MS-DOG, NeXT, OSF, SCO, Solaris, SunOS, Ultrix, Unixware, Windoze, and even Unicos on a Cray T3E. It has full support for programs the debugging of POSIX threads.

The package includes the library, configuration scripts, debug utility application, test program, and documentation.

2. Valgrind http://valgrind.kde.org/

Valgrind is a GPL distributed system for debugging and profiling x86-Linux programs. I can also be helpful for programs for platforms other than x86 since behavior of x86 binary is similar to other binaries. The accompanying tools with Valgrind automatically detect many memory management and threading bugs, avoiding hours of frustrating bug-hunting, making programs more stable. It supports a through detailed profiling to help speed up the programs.

The Valgrind distribution includes four tools: two memory error detectors, a thread errordetector, and a cache profiler.

3. Electricfence http://rpmfind.net/linux/RPM/conecti...-2cl.i386.html

Electric Fence is a freeware library that can be used for C programming and debugging. It can be linked at compile time and it will warn about possible problems such as freeing memory that doesn't exist, etc. It is basically a memory profiling tool. However currently it is available only on HP-Unix platform (I am not very sure though).

4. GDB http://sources.redhat.com/gdb

This is the Gnome Debugger which comes as a freeware support package with freeware Linux distribution like Red Hat, Slacware, and Debian etc. It has full support of many languages like C, C++, and Perl etc. It helps to debug the binaries of these languages in modes like single step, multiple step or complete run. It also has provisions of setting break points and trace value.

It is helpful for stub testing, functional flow checking and bound checking. Further this is readily available with all flavours of Linux andUnix platforms and is amply supported in user community.

5. Insight http://sources.redhat.com/insight

Insight is a graphical user interface to GDB, the GNU Debugger written in Tcl/Tk by at Red Hat, Inc. and Cygnus Solutions Insight provides all features provided by GDB along with Graphical debugging interface replacing traditional command based interface.

6. Memprof http://www.gnome.org/projects/memprof

MemProf is a free ware memory Profiling and memory leak detection tool which comes as an addendum to common Linux distributions. It can generate a profile how much memory was allocated by each function in the program. It can scan memory and find blocks that have been allocated but are no longer referenced anywhere (dead code).

MemProf works by pre-loading a library to override the C library's memory allocation functions and does not require recompiling the program. One advantage MemProf has over some other similar tools that are available is that it has a nice GUI front-end and is relatively easy to use.


I am Nikhil Bhargava from Delhi, India. I am a Computer Engineer currently working in C-DOT, India for past one year. Comments and Suggestions are always welcome.




10.3  圖形化調試工具

儘管你可以在大多數(即便不是全部)Linux調試 任務中使用GDB,但與長時間坐在GDB命令行前面相比,許多人還是更願意使用諸如DDD或Eclipse這樣的圖形化工具。從各方面來看,大多數非常花 哨的圖形化調試工具不過是建立在GDB基礎上的一個抽象,所以選擇哪一種圖形化工具完全屬於個人愛好。

本節將介紹兩個這樣的工具,當然還存在其他許多這樣的工具(包括GDB的前端GNU insight),它們也被各種開發團隊所使用。



從事Linux應用開發一年多了,感覺很不規範很山寨,準備系統地學習一下下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

 IDA最知名的是反彙編器,它是二進制文件執行靜態分析的最佳工具之一。由於現代反靜態分析技術的複雜性,人們常常將靜態分析與動態分析技術結合起來,以利用二者的優勢。理想情況下,所有這些工具集成在一個軟件包中。Hex-Rays在推出4.5版的IDA調試器時,做出鞏固IDA的作用將其作爲一個通用的逆向工程工具這一舉動。隨着IDA的後續版本,調試功能得到改善。在最新版本中,IDA能夠在多個不同的平臺上進行本地和遠程調試,並支持多種不同的處理器。




Linux調試工具lsof的深入分析


DDD,全稱是Data Display Debugger,對於Linux系統中的編程人員來說,它就是windows系統下面的visual studio ,功能強大,數Linux世界中少數有圖形界面的程序調試工具

  • 跨平臺Web抓包分析工具 Rythem

    Rythem是什麼 Rythem是一個與Fiddler同類的軟件,和Fiddler一樣具有 代理抓包/替換 功能,與Fiddler最大的不同是Rythem是跨平臺&開源的。 官方詳細介紹: http://www.alloyteam.com/2012/05/web-front-end-tool-rythem-1/ 以下爲Rythem運行的截圖:(MacO...Rythem更多Rythem信息

  • 內存泄漏問題跟蹤 YAGAC

    YAGAC 是一個庫用來鏈接到你的C程序,讓您可以方便地跟蹤應用程序中的內存泄漏問題。根據你的代碼部分。它跟蹤你的代碼只分配內存,不監測第三部分庫,你可以有多個垃圾收集。跟蹤可以被激活的更新調試標誌,而無需重新啓動您的應用程序。其目的是爲守護程...更多YAGAC信息

    最近更新: YAGAC 0.99-4.0 發佈,C 程序內存泄漏檢測 發佈於 1年前

  • C++ 異常堆棧跟蹤器 libcsdbg

    libcsdbg 是一個 C++ 異常堆棧跟蹤器。當異常被拋出、捕獲和處理時,libcsdbg 提供可工具來創建和處理異常堆棧的跟蹤,並通過調用堆棧來傳播異常路徑。跟蹤器提供異常發生的函數以及額外的 addr2line 信息(源碼級別) 功能列表: 複雜的異常堆棧跟蹤(支持...libcsdbg更多libcsdbg信息

    最近更新: libcsdbg 1.23 發佈,C++ 異常堆棧跟蹤器 發佈於 4天前

  • 程序調試工具 GDB

    GDB(GNU symbolic debugger)簡單地說就是一個調試工具。它是一個受通用公共許可證即GPL保護的自由軟件。 象所有的調試器一樣,GDB可以讓你調試一個程序,包括讓程序在你希望的地方停下,此時 你可以查看變量,寄存器,內存及堆棧。更進一步你可以修改變量...GDB更多GDB信息

    最近更新: GDB 7.7 發佈,程序調試工具 發佈於 12天前

  • 可視化調試工具 DDD

    GNU DDD (Data Display Debuger) 是一個圖形化的調試工具,通過對調試命令例如 GDB、DBX、WDB、JDB、XDB 等等命令行工具的封裝,提供一個非常友好的調試界面。DDD更多DDD信息

  • 程序調試工具 strace

    strace是Linux環境下的一款程序調試工具,用來監察一個應用程序所使用的系統呼叫及它所接收的系統信息。 strace是一個有用的小工具,它可以通過跟蹤系統調用來讓你知道一個程序在後臺所做的事情。Strace是一個基礎的調試工具,在大多數Linux系 統上默認已經...更多strace信息

  • 內存泄露檢測工具 Visual Leak Detector

    靈活自由是C/C++語言的一大特色,而這也爲C/C++程序員出了一個難題。當程序越來越複雜時,內存的管理也會變得越加複雜,稍有不慎就會出現內存問題。內存泄漏是最常見的內存問題之一。內存泄漏如果不是很嚴重,在短時間內對程序不會有太大的影響,這也使得內...更多Visual Leak Detector信息

  • 運行時診斷工具 Valgrind

    Valgrind是一個運行時診斷工具,它可以監視 一個指定程序的活動並通知你在你的代碼中可能存在的各種各樣的內存管理問題。它類似於老式的Electric Fence工具(該工具將標準的內存分配函數替換爲自己的函數以提高診斷能力),但被認爲更容易使用並且在多個方...Valgrind更多Valgrind信息

    最近更新: Valgrind 3.9.0 發佈,運行時診斷工具 發佈於 3個月前

  • 圖形化的調試工具 KDbg

    KDbg 是一個 gdb 調試工具的圖形化界面的工具(點擊查看大圖)。KDbg更多KDbg信息

    最近更新: KDbg 2.5.4 發佈,圖形化的調試工具 發佈於 3個月前

  • 【共享】程序調試工具 OllyDbg

    OLLYDBG是一個新的動態追蹤工具,將IDA與SoftICE結合起來的思想,Ring 3級調試器,非常容易上手,己代替SoftICE成爲當今最爲流行的調試解密工具了.同時還支持插件擴展功能,是目前最強大的調試工具.OllyDbg更多OllyDbg信息

  • C/C++調試器 LLDB

    LLDB 是下一代高性能的調試器,構建一組可重用的組件,覆蓋很多 LLVM 項目的庫,例如 Clang 表達式解析器和 LLVM 反彙編器。目前該項目還處於前期開發狀態,但已經注意支持在 Mac OS X 上的 C/C++ 和 Objective-C 的開發。...更多LLDB信息

  • 【免費】窗口應用調試工具 Managed Spy

    有不少開發者使用Visual Studio®提供的工具Spy++。使用Spy++,你可以瞭解一個運行中的應用程序的窗體佈局或確定一個導致bug的特定窗體消息。然而,當你創建一 個基於Microsoft® .NET框架的應用程序,Spy++變得不太管用了,因爲由Spy++截取窗體消息和類不...Managed Spy更多Managed Spy信息

  • Linux程序調試工具 XBuildStudio

    您還在使用gdb緩慢地調試UNIX/LINUX的程序嗎?XBuildStudio是專爲提升UNIX/LINUX的程序的開發而設計的在WINDOWS平臺上調試UNIX/LINUX程序的開發工具,操作方式類似VC的環境,有效提升您的工作效率.XBuildStudio更多XBuildStudio信息

  • gdb的終端界面增強版 CGDB

    cgdb,可以看成是gdb的終端界面增強版,相比windows下的visual studio而言,它的功能顯得十分輕量級而沒有太多繁雜,能在終端裏運行。CGDB更多CGDB信息

  • 調試器 EDB (Evan's Debugger)

    EDB (Evan's Debugger) 是一個基於 Qt4 開發的二進制調試工具,主要是爲了跟 OllyDbg 工具看齊,通過插件體系可進行功能的擴充,當前只支持 Linux ,將來會發布其他平臺的版本。EDB (Evan's Debugger)更多EDB (Evan's Debugger)信息

    最近更新: Evan's Debugger 0.9.20 發佈,二進制調試工具 發佈於 1個月前

  • 圖形化OpenGL調試器 BuGLe

    BuGLe 結合圖形化的OpenGL調試與選擇的過濾器上的OpenGL命令流。調試器可以查看狀態、紋理、framebuffers ,着色器,而過濾器允許日誌,錯誤檢查,自由相機控制,視頻捕捉等。BuGLe更多BuGLe信息

  • 軟件開發輔助軟件 uuSpy

    uuSpy工具很類似於Spy++。此外,還可以查看[***]的密碼,甚至取得Internet Explorer的HTML。使用uuSpy你可以知道正在運行的窗口程序的結構。或者監視導致程序出錯的特定的窗口消息。甚至你可以輸出指定窗口的 style/exstyle,或做某些設置。 uuSpy可以對指...uuSpy更多uuSpy信息

  • Linux內核測試工具 CrackerJack

    Crackerjack Project 是由中日韓三方共同參加開發,該項目主要目的是爲Linux內核提供自動化的迴歸測試功能,以幫助提高內核開發質量等,項目包括一個完整的內核自動化測試框架,以實現自動化載入、執行、管理測試用例,還包括定義新的測試程序(用例),集...更多CrackerJack信息

  • 開源PE文件分析工具 pev

    pev是一個小巧的基於命令行的windows可執行文件(PE)分析工具,支持linux、windows和OSX系統。特別的是它使用ANSI標準c編寫,因此可以容易的在多個平臺上編譯。pev免費並且開放源代碼。更多pev信息

  • C 語言內存錯誤檢測工具 memwatch

    MEMWATCH 由 Johan Lindh 編寫,是一個開放源代碼 C 語言內存錯誤檢測工具。只要在代碼中添加一個頭文件並在 gcc 語句中定義了 MEMWATCH 之後,您就可以跟蹤程序中的內存泄漏和錯誤了。MEMWATCH 支持 ANSI C,它提供結果日誌記錄,能檢測雙重釋放(double-...更多memwatch信息

  • 程序跟蹤的C庫 PinkTrace

    PinkTrace是一款輕量級的C庫文件,簡化了編寫應用程序跟蹤程序的困難。它由圍繞不同ptrace()請求的封裝、用於解碼參數 (strings, socket addresses)的API和一個實驗性的用於編碼參數掉的API構成。PinkTrace的目標是爲跟蹤程序提供一個跨平臺的庫。另外,...更多PinkTrace信息

  • BASH Debugger

    Shell 腳本調試器。 We have debuggers for bash, python, zsh, ksh, GNU make 3.81 and Python. In the patched sources for Make, we provide better error handling and tracing. GNU Emacs support is included for all debuggers....BASH Debugger更多BASH Debugger信息

  • 程序性能跟蹤工具 LTTng

    一個高效的Linux 的Tracing Tools。它能夠幫助發現並行環境下的性能問題及bug,甚至跨系統tracing也是可能的。更多LTTng信息

  • 程序調試工具 ltrace

    ltrace 是一個調試程序,可在它退出之前執行指定命令來攔截和記錄動態庫調用和信號接收過程。它還可以攔截並打印系統調用。要跟蹤的項目不需要重新編譯,可以直接在二進制文件上使用。更多ltrace信息

    最近更新: ltrace 0.7.1 發佈,程序調試工具 發佈於 1年前

  • Linux 調試器 和 跟蹤器 KGTP

    KGTP 是一個 實時 輕量級 Linux 調試器 和 跟蹤器 。 使用KGTP 不需要 在Linux內核上打PATCH或者重新編譯,只要編譯KGTP模塊並insmod就可以。 其讓Linux內核提供一個遠程GDB調試接口,於是在本地或者遠程的主機上的GDB可以在不需要停止內核的情況下用GDB t...更多KGTP信息

  • 調試助手庫 DAL

    Debug Assistant Library (DAL) 是用於輔助調試的程序庫,具有跨平臺和統一接口的特點。 主要特性: assistant library for debugging, across platforms with uniform interface supports multi-compiler, support multi-platform Debug Message Asserti...更多DAL信息

    最近更新: DAL 2.0.32 發佈,調試助手庫 發佈於 1年前

  • Ollydbg的TLS回調捕獲插件 TLSCatch

    TLSCatch是一款Ollydbg插件,它可以簡單攔截當前進程地址空間的新模塊加載操作,並從中搜索tlscallback。如果發現回調,則在每 個回調上設置一個一次性斷點。在惡意軟件分析中可以捕獲任何tls callback。將 TLSCatch.dll拷貝到Ollydbg的插件目錄就可以工作...更多TLSCatch信息

  • 故障注入的C庫 libfiu

    libfiu是一個故障注入的C庫。它提供用於標識“故障點”(“核心API”)裏面的代碼,功能啓用/禁用這些點的失敗(“控制API”)。核心API內部使用上要執行故障注入代碼。控制API用於內部測試代碼,以控制注入失敗。 libfiu is a C library for fault inject...更多libfiu信息

  • pstack工具 lsstack

    lsstack是一個linux實現的的pstack工具,它原本在solaris系統上。 lsstack是一個命令行工具。 它能對指定的進程快速而高效地打印出其的線程和調用堆棧(call stack)。 以及函數在被ar的時候的符號名稱。更多lsstack信息

  • vim-ruby-debugger

    vim-ruby-debugger 這是 vim 上調試 Ruby 程序的插件。更多vim-ruby-debugger信息

  • 在windows下編譯和調試遠程GDB BVRDE

    BVRDE是一款“Remote Compile IDE”,主要功能爲:在windows上提供一套圖形化的界面來編譯和調試遠程的系統,(當然,BVRDE也支持對本地系統的調試)。方便對GDB等調試工具不熟悉或者不喜歡的用戶進行程序調試,提高工作效率。 BVRDE安裝在Windows系統上,通...BVRDE更多BVRDE信息

  • 反調試demo Pafish

    Pafish是一個模擬了多個反調試(調試器/虛擬機/沙箱)技巧的demo工具。這些反調試技巧經常被惡意軟件使用,干擾調試器工作或動態行爲分析工作。(文/pulog)Pafish更多Pafish信息

  • skpd

    skpd 是一個用來將進程 dump 到一個可執行的 ELF 文件並執行。更多skpd信息

  • Termdebug

    Termdebug是一組實用程序來記錄和回放的輸入和輸出一個終端程序。它的主要目標是幫助開發和調試終端程序。其他項目如termrec / termplay,nethack-recorder /播放器和腳本/ scriptreplay只記錄輸出。然而,當調試一個交互式終端程序,輸入通常是更重要的輸出。...更多Termdebug信息

    最近更新: Termdebug 2.1 發佈,輸入的記錄和回放 發佈於 8個月前

  • 內存函數分析工具 LMDBG

    LMDBG (Lightweight modular malloc debugger) 提供一組小工具用來收集和分析 malloc/realloc/memalign/free 函數調用的日誌。LMDBG 不提供任何方式用來檢測 malloc() 內存分配的超支分界。LMDBG 可檢測內存泄漏和重複釋放。LMDBG 可生成全堆棧日誌。...更多LMDBG信息

    最近更新: LMDBG 1.2.0 發佈,內存分配函數分析 發佈於 6個月前

  • php 調試工具 ydb

        ydb 是像gdb一樣的php調試工具,用擴展實現,可以在運行過程中查看變量值,也可以進行性能測試,而不用對源代碼進行任何更改,就像xdebug和xhprof 中提供的功能,但使用更方便     ydb也可以稱爲一個在線調試工具,什麼叫在線調試?就是在線上生產...更多ydb信息

  • 分佈式多線程檢查點工具 DMTCP

    高性能計算/分佈式計算等大量計算需要程序運行幾天、幾周甚至幾個月,如果期間因爲電力或者不可避免的問題導致程序中斷會浪費大量的時間和人力,還 有超級計算機在這段時間裏運行的電力成本。我們沒有遇到過電力問題,不過我們最近遇到的場景是實驗室需要做...更多DMTCP信息

  • 垃圾收集器 bdwgc

    bdwgc (Boehm-Demers-Weiser conservative garbage collector)是個垃圾收集器,用來替代 C malloc 或者是 C++ new。bdwgc 也可以用其他編程語言實現,但是要用 C 作爲中間轉換語言。bdwgc 也可以用來檢測 C 或者 C++ 程序的漏洞。舊版的垃圾收集器中包括...更多bdwgc信息

  • C/C++ 程序調試工具 libdwarf-dwarfdump

    libdwarf 可以在 ELF 對象文件中讀或者寫 DWARF 調試信息。dwarfdump 使用 libdwarf 來讀對象文件和打印可讀樣式的 DWARF 內容。libdwarf 遵從了 DWARF2 及以上標準,源代碼中包括一些樹搜索(tsearch)算法(平衡,紅黑和二進制)。...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章