Debugger
A debugger (in English, debugger ) is a Logiciel which allows déboguer, i.e. to help the Programmeur to detect bugs in a program (it can be also used to test this last).
Use
The program with déboguer is carried out through the debugger and is carried out normally. The debugger then makes it possible to the programmer supervise the implementation of the program, while allowing him by various means of stopping (to put in pause the execution of the program) and of observing for example the contents of the various variables in memory. The state of execution can then be observed so, for example, to determine the cause of a failure.When the execution of a program is stopped, the debugger posts the current position of execution in the original Source code if this one is a source-level debugger or symbolic debugger . If it is a low-level debugger or a machine-language debugger , it shows the line disassembled.
Many debuggers allow, in addition to the observation of the state of the registers processors and the memory, to modify them before returning the hand to the débogué program. They can then be used to locate certain software protections and to decontaminate them, bringing to the design of a ace. Thus, certain software, knowing the operation of the debuggers and wanting to prevent such modifications, sets up techniques antidébogage ( anti debugging tricks )
Techniques
The tools offered by the debuggers primarily depend on the computer programming language (used to develop the program with déboguer) for which it was designed. Nevertheless, the large majority of the debuggers offer similar tools.
Tools to stop (to put in pause) the execution of the program
- ordering of manual stop: the programmer can decide constantly to stop the execution
- Stagnation point : placed at a specific place of the program (generally in the source code), it indicates to the debugger to stop the execution when it reaches this place
- stagnation point conditioned: like the stagnation point, but additional condition (like the number of passages on this stagnation point for example)
- not of observation (watch): allows to stop the execution of the program on the condition of the modification of a variable
Tools to control the execution of the program
- step by step: execution instruction by instruction
- step by step summary: an instruction is carried out, in the main program, from each time the programmer requests it step by step
- detailed: like the step by step summary one, except that step by step between also in the functions
- with clocking: with periodic intervals, an instruction is carried out (that makes it possible to slow down the execution of the program so that it can be followed closely by the human eye)
- flashback: to return to the preceding instruction, by finding the preceding state (rather rare functionality)
Tools to observe the state of the program
- observation of a variable
- observation of a zone memory
- observation of a register of the microprocessor
- observation of the pile of call ( backtrace )
- observation of the Source code with current point of execution
- observation of the code Assembler (except interpreted language) with current point of execution
- trace : allows to observe remote information, without stopping the execution of the program
Moreover, the debugger generally makes it possible to modify the state of the program, when its execution is stopped:
Known debuggers
- Adb
- AntiC
- Broadway
- CodeView and Visual Studio Debugger
- DAEDALUS
- dbx
- D.U.M.A Detect Unintended Memory Access - the fork of Electric Fence
- Dynamic debugging slap (DDT), and ODT
- Electric Fence
- Etnus TotalView
- gdb or Gnu DeBugger
- IDA The Interactive Disassembler
- Java Platform Debugger Structures
- Ladebug
- MacsBug
- Mpatrol
- OCamlDebug, the debugger of Objective Caml
- OllyDbg
- EP To explore
- PRISM Parallel Debugger
- Purify
- Sdb
- SoftICE
- SPlint
- T-Bug, the debugger integrated in Perl 5
- TMON
- Turbo Debugger
- Valgrind
- W32DASM
- WinDbg
Reference book
- Jonathan B. Rosenberg, How Debuggers Work: Algorithms, Dated Structures, and Architecture, John Wiley & Sons, ISBN 0-471-14966-7
| Random links: | Walter Scott | Wildcat | Pristurus crucifer | Seengen | Andrea Baldini | Rossignol |