A debugger program is one that allows the user to view another program line by line. This allows the user to identify incorrect code and find out how a program flows. The debugger lets the user see how their program is viewed by the computer.
A debugger is very useful to find semantic errors in the program. So, it is necessary as it helps the programmer visualize program flow. A debugger may take practise to use, but it is well worth it as it reduces the time taken to perfect a program.
Debugger programs offer basic features such as symbol resolver, query processor, expression interpreter etc. There are also other features available such as running a program step by step, stopping the program to see its current state, tracking the variable values etc. Some debugger programs can also modify a program while it is running.
There is a feature known as reverse debugging in some debugger programs. It allows the users to view a program’s execution backwards in time. Microsoft Visual Studio offers reverse debugging for C#, Visual Basic, .Net etc. Reverse debugging is not commonly used but it is very useful feature.
Some of the commonly used debugger programs are −
This is a portable debugger. It runs on many systems that are similar to Unix. The GNU debugger is also available for many programming languages such as C, C++, Pascal, Fortran, Java etc.
There are many facilities in GDB for tracing and changing the execution of programs. The program’s internal variables can be viewed and modified by the user using GDB. Also, the functions of the program can be called independently of their normal execution.
This is a debugger that is used along with Microsoft Visual Studio. Using this debugger, program code can be modified and recompiled instantaneously without exiting the running program.
The Microsoft Visual Studio Debugger provides support to debugging programs in .Net and Windows languages such as C and C++. A problem in this debugger is that it cannot trace into code written in kernel mode.
This is also known is r2. It is used for reverse engineering and analyzing binaries. Radare2 is primarily built around a disassembler and it translates machine language code into assembly language code.
This debugger program has a sharp learning curve as it doesn't have a graphical user interface. It does have a web user interface and also an external GUI called Cutter.
This debugger has reusable components and uses lots of libraries from the LLVM project. The LLDB is a free and open source software like the other parts of the LLVM project.
LLDB supports basic debugging of multiple programs written in C, C++, Swift etc.
This is a free debugging tool that is in essence a virtual machine that uses just in time techniques (JIT). Valgrind transfers a program into a simpler form called intermediate representation. After that, it translates the intermediate representation into machine code and lets the host processor run it.