Sign in Join
Wiki copytemporary

LazDebuggerFp: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-<div style="font-size: 1.2em;">
2-
31> **Note:** For more information about the Free Pascal debugger see\
42> \
53> * [[Debugger Status]] for supported features
64>
75> - [[FpDebug]] for info on this debugger
86>
97> \
108
11-</div>
12-
139> **Tip:** **LazDebuggerFp** works best with **DWARF 3**
1410
15-- **LazDebuggerFp** is a [[Debugger|debugger]] integrated into the IDE based on <b>[[FpDebug]]</b>.
11+- **LazDebuggerFp** is a [[Debugger|debugger]] integrated into the IDE based on [[FpDebug]].
1612- It many cases it is simply referred to as **FpDebug** (making that term ambiguous)...
1713- **LazDebuggerFp** requires [[DWARF]] debug info to be enabled in the project options.
1814
1915## Using LazDebuggerFp in the IDE
2016
2117The package is installed in the IDE by default.
2218
2319The debugger can be selected in Tools \> Options \> Debugger \> Debugger Backend
2420
2521## Related topics
2622
2723- [[FpDebug-Watches-FunctionEval|Function evaluation in watches (Calling functions in the debugged app)]]
2824- [[FpDebug-Watches-Intrinsic-Functions|Intrinsic (build in) helper functions]]
2925
3026## Debugger specific options
3127
3228`Tools | `[[IDE Window: IDE Options Dialog|Options]]` | `[[IDE Window: Debugger Options|Debugger]]` | Debugger Backend | FpDebug integrated Dwarf-debugger`
3329
3430ConsoleTty
3531(Linux only) Redirect StdOut to an existing tty
3632
3733ForceNewConsole
3834(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.
3935
4036IntrinsicPrefix
4137See [[FpDebug-Watches-Intrinsic-Functions|FpDebug-Watches-Intrinsic-Functions#Settings]]
4238
4339NextOnlyStopOnStartLine
4440By 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.\
4541For example; Foo(Func1(), Func2()); contains 3 calls, each of the 3 can be stepped in (if they have debug info)
4642
4743HandleDebugBreakInstruction
4844If the debugger should stop at hardcoded "int3" breakpoints. [<https://bugs.freepascal.org/view.php?id=37292>](https://bugs.freepascal.org/view.php?id=37292)
4945
5046MaxMemReadSize
5147Limits 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.\
5248This 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.\
5349The limit applies to the structure as a whole. Individual fields/elements can be read if they are smaller than the limit.
5450
5551MaxStringLen
5652Length in chars to cut off strings. Protects against corrupted data.
5753
5854MaxArrayLen
5955Length in elements to cut off array. Protects against corrupted data.
6056
6157MaxNullStringSearchLen
6258PChar (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.
6359
6460MaxStackStringLen, MaxStackArrayLen, MaxStackNullStringSearchLen
6561Same 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.
6662
6763MaxArrayConversionCnt
6864If configured, the debugger can run [[IDE Window: Ide Options - Backend Value Converter|converters (See here)]] on data (Currently only passing **variant** to **SysVarToLStr**). In arrays and structures each entry/field will be converted if it is a variant. This limits the amount of entries in an array that will be converted.\
6965If an array contains structures with several variant fields, then each field is counted as conversion.\
7066If the debug inspector fetches an array, then this limit does not apply to the array as a whole. It will rather apply to each entry within the array (should those entries be themself arrays). This is so, that the limit applies to each row displayed by the Inspector.
7167
7268MaxTotalConversionCnt
7369Similar to **MaxArrayConversionCnt**, but applies to all conversions. I.e., also outside of arrays, like fields of a class.\
7470This limit also applies to the whole of an inspected value in the inspector.\
7571Unlike what happens in the inspector, in the watches window an expanded watch (sub-watches) does not count as a whole. Each sub-watch counts individually.
7672
7773The debugger currently does not give an indication if a value was cut off. This will be implemented in future.
7874
7975---
8076*From the Free Pascal wiki, page "LazDebuggerFp", as it stood on 2023-03-12 after a change by Martin, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
8177Category: Debugging

Back to history