Difference between revisions of "Debugger Status"
From Lazarus wiki
Jump to navigationJump to searchLine 120: | Line 120: | ||
| Step over "none breaking" breakpoint || | | Step over "none breaking" breakpoint || | ||
| Y || Y || Y || Y | | Y || Y || Y || Y | ||
− | | class="unknown" | | + | | class="unknown" | ? |
| Y | | Y | ||
| Any "step" command will continue to its step-end after a "none breaking" Breakpoints. This is a Breakpoint that has its break property turned off. It may record a snapshot, log a message, or enable/disable other breakpoints. | | Any "step" command will continue to its step-end after a "none breaking" Breakpoints. This is a Breakpoint that has its break property turned off. It may record a snapshot, log a message, or enable/disable other breakpoints. | ||
Line 127: | Line 127: | ||
| Step over ignored exceptions || | | Step over ignored exceptions || | ||
| Y || Y || Y || Y | | Y || Y || Y || Y | ||
− | | class="unknown" | | + | | class="unknown" | ? |
| Y | | Y | ||
| Only for standard fpc exception handling. And (Lazarus 2.2) SEH on Win64. <br> | | Only for standard fpc exception handling. And (Lazarus 2.2) SEH on Win64. <br> | ||
Line 134: | Line 134: | ||
| Step from except to finally or except || | | Step from except to finally or except || | ||
| Y || Y || Y || Y | | Y || Y || Y || Y | ||
− | | class="unknown" | | + | | class="unknown" | ? |
| Y | | Y | ||
| Only for standard fpc exception handling. And (Lazarus 2.2) SEH on Win64. <br> | | Only for standard fpc exception handling. And (Lazarus 2.2) SEH on Win64. <br> | ||
Win32 and other OS structured exception handling are not supported (Ignored exceptions will turn Stepping into Running). | Win32 and other OS structured exception handling are not supported (Ignored exceptions will turn Stepping into Running). | ||
|} | |} | ||
− | |||
− | |||
− | |||
==== Breakpoints / Exceptions ==== | ==== Breakpoints / Exceptions ==== |
Revision as of 04:57, 8 December 2019
This is based on Lazarus 2.0
Available Debuggers
- GNU Debugger (gdb)
- The first debugger that was supplied with Lazarus. This debugger uses GDB as backend. The IDE performs translations between gdb's none Pascal-ish interface and the interface provided by the IDE. Package: LazDebuggerGdbmi
- GNU Debugger through SSH (gdb)
- Allows to launch GDB over an ssh connection for remote debugging. This has however some serious limitations. Package: LazDebuggerGdbmi
- GNU remote debugger (gdbserver)
- Remote debugger using GdbServer (part of the gdb suite). Package: LazDebuggerGdbmi
- LLDB Debugger (Alpha)
- A basic LLDB based backend. This is a prove of concept implementation. The IDE displays raw LLDB output (no translation, no clean-up...) and there are no plans to add translation of the LLDB output. For using LLDB on Pascal applications the "LLDB Debugger (with fpdebug)" should be used. Package: LazDebuggerLldb
- LLDB Debugger (with fpdebug)
- This debugger uses LLDB as a backend. In order to display Pascal-style results, it uses the "fpdebug" engine to show locals/watches. LLDB is used to control stepping, breakpoint and execution. For reading data LLDB is used to read the raw memory only. Package: LazDebuggerFPLldb
- GNU Debugger (with fpdebug)
- Using GDB for stepping/breakpoints/... and FpDebug for watches. Package: LazDebuggerFPGdbmi
- FpDebug / LazDebuggerFp - integrated DWARF debugger / (Known issues)
- A new debugger completely implemented in Pascal. This debugger implements the DWARF standard (currently 2 and 3 are partly implemented). It has special implementations added to interpret info provided by FPC. It can currently be used on Windows and Linux (very basic support for MacOS). Package: LazDebuggerFP
- FpDebug / LazDebuggerFpRspRemote
- A new remote debugger to communicate with a gdbserver stub using gdb's remote serial protocol over tcp/ip (in future this could be expanded to include serial/UART). This debugger inherits from LazDebuggerFP, hence in principle supports the same functionality. Currently it only supports the AVR target. Not stable yet. Package: LazDebuggerFpRspRemote
- DAB / LazDABDebugger
- The Debug Adapter Protocol (DAB) is a protocol to abstract the communication between a Debugger-frontend like Lazarus, and an underlying debugger like FpdServer. LazDABDebugger is a debugger that connects to (any?) DAB-adapter. This makes is possible to debug other languages or different platforms within Lazarus.
- DAB - FpdServer / LazFPDServerDebugger
- A derivative of LazDABDebugger specifically shaped to work with FpdServer, a debugger based on FpDebug that supports the DAB-protocol.
Notes
For the GDB and LLDB based debugger, support is indicated based on the assumptino that your version of GDB supports this. Support indication is generally based on current GDB/LLDB for mainstream OS.
Fp-Debugger currently only works for Windows and Linux
Start/Stop
Feature | Key | ! GdbMi | GdbMi+Ssh | GdbServer | GdbMi+FpDebug | ! Lldb+FpDebug | ! Fp-Debugger | ! Comments |
---|---|---|---|---|---|---|---|---|
Run | F9 | Y | Y | Y | Y | Y | Y | |
Run to first line (Step) | F7 / F8 | Y | Y | Y | Y | class="unknown" ? | class="not" N | For GUI apps the first line is in the code generated by the IDE |
Attach | Y | Y | Y | Y | ? | N | ||
Detach | Y | Y | Y | Y | ? | N | ||
Stop | Y | Y | Y | Y | Y | Y | ||
Reset Debugger | Y | Y | Y | Y | Y | Y | Kill/Stop |
Execution Control
Feature | Key | ! GdbMi | GdbMi+Ssh | GdbServer | GdbMi+FpDebug | ! Lldb+FpDebug | ! Fp-Debugger | ! Comments |
---|---|---|---|---|---|---|---|---|
Continue (Run) | F9 | Y | Y | Y | Y | Y | Y | |
Step over line | F8 | Y | Y | Y | Y | Y | Y | |
Step into line | F7 | Y | Y | Y | Y | Y | Y | |
Step (over) to line at cursor | F8 | Y | Y | Y | Y | ? | Partial | "STEP OVER" - This works only within the current procedure.
|
Run to line at cursor | N | N | N | N | N | N | Workaround: Use F5 to set a breakpoint, then F9 to run | |
Step out (of current function) | Shift-F8 | Y | Y | Y | Y | Y | Y | |
Step over asm | Y | Y | Y | Y | Y | Y | ||
Step into asm | Y | Y | Y | Y | Y | Y | ||
Step over "none breaking" breakpoint | Y | Y | Y | Y | ? | Y | Any "step" command will continue to its step-end after a "none breaking" Breakpoints. This is a Breakpoint that has its break property turned off. It may record a snapshot, log a message, or enable/disable other breakpoints.
| |
Step over ignored exceptions | Y | Y | Y | Y | ? | Y | Only for standard fpc exception handling. And (Lazarus 2.2) SEH on Win64. Win32 and other OS structured exception handling are not supported (Ignored exceptions will turn Stepping into Running). | |
Step from except to finally or except | Y | Y | Y | Y | ? | Y | Only for standard fpc exception handling. And (Lazarus 2.2) SEH on Win64. Win32 and other OS structured exception handling are not supported (Ignored exceptions will turn Stepping into Running). |
Breakpoints / Exceptions
Feature | Key | ! GdbMi | GdbMi+Ssh | GdbServer | GdbMi+FpDebug | ! Lldb+FpDebug | ! Fp-Debugger | ! Comments |
---|---|---|---|---|---|---|---|---|
Breakpoint on Source Line | Y | Y | Y | Y | Y | Y | ||
Breakpoint on Assembler Line | Y | Y | Y | Y | Y | Y | ||
Watchpoint / Breakpoint Data | Y | Y | Y | Y | ? | Partial | ||
.... | . | . | . | . | . | . |
Data
Feature | Key | ! GdbMi | GdbMi+Ssh | GdbServer | GdbMi+FpDebug | ! Lldb+FpDebug | ! Fp-Debugger | ! Comments |
---|---|---|---|---|---|---|---|---|
Watches | Y | Y | Y | Y | Y | Y | ||
Locals | Y | Y | Y | Y | Y | Y | ||
Stack | Y | Y | Y | Y | Y | Y | ||
Threads | Y | Y | Y | Y | Y | Y | Running State indicator may not be accurate | |
Inspect | Y | Y | Y | Y | Y | Y | ||
Evaluate / Modify | Y | Y | Y | Y | ? | Only Evaluate No Modify |
||
Watch/Inspect Properties | N | N | N | N | N | N | Using "DWARF" properties that refer directly to a field (no getter method) are shown. | |
Watch/Inspect Function calls | N | N | N | N | N | N |