Difference between revisions of "Lazarus Debugger Implementation"

From Lazarus wiki
Jump to navigationJump to search
Line 23: Line 23:
  
 
BaseDebugManager is currently based on components\debuggerintf\dbgintfdebuggerbase.pp
 
BaseDebugManager is currently based on components\debuggerintf\dbgintfdebuggerbase.pp
This may need to be redesigned, since the above file is in the backend-interface. It should be a delegate, but not a baseclass to the frontend.
 
  
 
== Debugger-Interface ==
 
== Debugger-Interface ==

Revision as of 20:37, 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