Difference between revisions of "Lazarus Debugger Implementation"

From Lazarus wiki
(Debugger-Frontend)
(Debugger-Frontend)
Line 18: Line 18:
  
 
The code currently is located in  
 
The code currently is located in  
- folder /debugger   
+
* folder /debugger   
- folder /ide, files: debugmanager.pas and basedebugmanager.pas  
+
* folder /ide, files: debugmanager.pas and basedebugmanager.pas  
- folders ide/frames and debugger/frames for configuration settings.
+
* folders ide/frames and debugger/frames for configuration settings.
  
 
BaseDebugManager is currently based on components\debuggerintf\dbgintfdebuggerbase.pp
 
BaseDebugManager is currently based on components\debuggerintf\dbgintfdebuggerbase.pp

Revision as of 21:38, 3 February 2021

English (en)

Introduction

This page provides an overview of how the debugger is implemented in the Lazarus IDE.

The debugger comprises the following parts:

Debugger-Frontend
The controls (run, step, stop buttons) and dialogs (watches, stack) in the IDE.
Debugger-Interface
A set of base-classes defining the communication between the front-end and each back-end
Debugger-Backend
Any code to control the debugged app, and retrieve/modify data from/in that app. The back-end may itself be split into an IDE back-end and an external back-end (e.g. gdb).

Debugger-Frontend

The code for the debugger frontend belongs currently directly to the IDE (to the project ide/lazarus.lpi). It is not a package of it's own.

Some of this code may one day be moved into a package. And maybe even introduce a package DebuggerFrontendIntf, to allow alternative 3rd party front-ends.

The code currently is located in

  • folder /debugger
  • folder /ide, files: debugmanager.pas and basedebugmanager.pas
  • folders ide/frames and debugger/frames for configuration settings.

BaseDebugManager is currently based on components\debuggerintf\dbgintfdebuggerbase.pp

Debugger-Interface

components\debuggerintf\

TDebuggerIntf - main class

TDebuggerDataMonitor and TDebuggerDataSupplier - stack, watches, ....

Debugger-Backend

GDB / GDBMI based

components\lazdebuggergdbmi

LLDB

components\lazdebuggers\LazDebuggerLldb components\lazdebuggers\LazDebuggerFpLldb

FpDebug

components\lazdebuggers\LazDebuggerFp