Difference between revisions of "LazDebuggerFp"

From Lazarus wiki
Line 5: Line 5:
'''LazDebuggerFp''' is a [[Debugger|debugger]] integrated into the IDE based on <b>[[FpDebug]]</b>.
'''LazDebuggerFp''' is a [[Debugger|debugger]] integrated into the IDE based on <b>[[FpDebug]]</b>.
It many cases it is simply referred to as FpDebug. (Making that term ambiguous)
It many cases it is simply referred to as '''FpDebug''' (making that term ambiguous)...
== Installation in the IDE ==
== Installation in the IDE ==

Revision as of 19:24, 12 October 2020

English (en)


Note: For more information about the Free Pascal debugger see Debugger Status and FpDebug

LazDebuggerFp is a debugger integrated into the IDE based on FpDebug.

It many cases it is simply referred to as FpDebug (making that term ambiguous)...

Installation in the IDE

Install the package LazDebuggerFp

  • menu [Package|Install/Uninstall packages]
  • click LazDebuggerFp in right pane, and push button [Install selection]
  • Button [Save and rebuild IDE]


(Linux only) Redirect StdOut to an existing tty
(Windows only) If the IDE has a console, debugging an app that also has a console will normally share the existing console. Setting this to "True" will open a new console for the debugged app.
By default "Step out" will return to the caller, and pause execution in the middle of the line from which the call originally came. This allows to "Step in" again, if several calls are made on that line.
For example; Foo(Func1(), Func2()); contains 3 calls, each of the 3 can be stepped in (if they have debug info)
If the debugger should stop at hardcoded "int3" breakpoints. https://bugs.freepascal.org/view.php?id=37292
Limits the amount of Memory the debugger will use for a single read. This can prevent errors if incorrect size information proclaims a structure is tens of Gigabyte big.
This may also protect from dummy declarations like "type TMaxArray = array [0..$7FFFFFFF] of byte; PMaxArray = ^TMaxArray". Such types are never fully allocated. They only act as accessor.
The limit applies to the structure as a whole. Individual fields/elements can be read if they are smaller than the limit.
Length in chars to cut off strings. Protects against corrupted data.
Length in elements to cut off array. Protects against corrupted data.
PChar (and strings in dwarf2) have no length info (or not determinable to the debugger). The debugger must read memory until it finds a #0. If no #0 is found the debugger will stop searching at this length.
MaxStackStringLen, MaxStackArrayLen, MaxStackNullStringSearchLen
Same as above, but applied when evaluating stack-frames (content for the Stack window). Due to the limited space in the stack window, one might choose lower limits.

The debugger currently does not give an indication if a value was cut off. This will be implemented in future.