Commit Graph

1281 Commits

Author SHA1 Message Date
Martin
1c87d53199 Debugger: implement reading class.unitname from RTTI 2022-08-05 02:45:01 +02:00
Martin
8749ca4f20 FpDebug: fix address for interfaces 2022-08-05 02:44:29 +02:00
Martin
2f4e270270 FpDebug: Windows, rewrite of "step after hitting breakpoint". Fix issues with incorrect steps (Instr-Ptr not reset) in multi thread scenario, when the int3 had been remove in the meantime. 2022-08-02 15:20:50 +02:00
Martin
48043da966 Debugger: Converter, match "*" and inheritance via "is:" 2022-08-01 18:41:17 +02:00
Martin
de03939782 LazDebuggerFp: Converter JsonForDebug 2022-07-27 01:17:36 +02:00
Martin
099c102565 FpDebug, LazDebuggerFp: more string support for function-eval / support string literals as param 2022-07-27 01:17:36 +02:00
Martin
f3476e5274 FpDebug: Callcontext, rename TFpValueCallParamStringByRef to TFpSymbolCallParamOrdinalOrPointer 2022-07-27 01:17:36 +02:00
Martin
8a0a21a7bc LazDebuggFp,FpDebug: fix racing conditions
- while TDbgController.SendEvents runs in the main thread, the work-thread may run TDbgControllerCallRoutineCmd
 - TDbgControllerCallRoutineCmd may run, while the main thread attempts to set the next command
 - CallStack code was from before the WorkQueue was introduced. It needs a different approach. (without attempting to start a new worker)
2022-07-27 01:17:35 +02:00
martin
2fce58a3de FpDebug: support DW_TAG_variant_part 2022-07-13 21:19:35 +02:00
Martin
d0d616e131 FpDebug: keep CurrentContext during function-eval calls. (access by other threads) 2022-07-13 10:27:47 +02:00
Martin
77857b84ce FpDebug: improve dyn array detection 2022-07-13 10:27:47 +02:00
Joost van der Sluis
a680001c2e FpDebug: Workaround in fpmake.pp for usage with fpc 3.2.2 2022-07-10 12:54:03 +02:00
Joost van der Sluis
7e67d9b871 FpDebug: fpmake.pp updated 2022-07-10 12:46:13 +02:00
Joost van der Sluis
a7d0a6e0b2 FpDebug: Keep register-names in stacktrace 2022-07-03 18:44:12 +02:00
Martin
6243770298 LazDebuggerFp: reduced default limit for max array members returned. Arrays can now be paged. (and RecurseCnt can override it) / removed hardcode 1000 limit. 2022-07-03 01:54:28 +02:00
Martin
248732defe debugln 2022-07-02 01:57:49 +02:00
Joost van der Sluis
dee6e4a482 FpDebug: Duplicate code removed 2022-07-02 00:48:42 +02:00
Joost van der Sluis
4ed7f56bb4 FpDebug: Handle CIEs and FDEs without instructions properly 2022-07-02 00:31:15 +02:00
Martin
3c322a009f FpDebug: Win, improved logging for errors 2022-07-01 01:06:08 +02:00
Martin
9e67808d84 LazDebuggerFp: improve errors for function calling 2022-07-01 01:06:08 +02:00
Martin
dcf2a00767 FpDebug: use Wow64SuspendThread for cross debugging. 2022-06-30 13:00:45 +02:00
Martin
4c6633754c FpDebug: fix empty array (nil) access from changes in 62145cd833, "Use Dwarf Call Frame Information (CFI) for stack-tracing when available. 2022-06-30 12:05:22 +02:00
Martin
ae2ca525ca FpDebug: Win, Clear Exception after function-eval-call failed (with SigSegV) 2022-06-30 02:46:01 +02:00
Martin
0429c822c1 LazDebuggerFp: debugln for function calling (watch-eval) 2022-06-30 02:30:15 +02:00
Martin
9fb4edfbe5 FpDebug: PascalParser, fixed unary minus after comma. 2022-06-30 02:30:14 +02:00
Martin
1d0daee376 FpDebug: fix setting negative value to Register for 32bit target. 2022-06-30 02:20:53 +02:00
Martin
f4f7cca11d FpDebug: fix reading range checks on Linux 2022-06-29 19:42:18 +02:00
Martin
bdb719b82a FpDebug: fix reading large dwarf info on 32bit Linux 2022-06-29 18:52:32 +02:00
Martin
2d7b1138f4 FpDebug: allow function calls on Linux-32bit 2022-06-29 17:42:08 +02:00
Martin
649e4600ef FpDebug: fix range check error from changes in 62145cd833, "Use Dwarf Call Frame Information (CFI) for stack-tracing when available. 2022-06-29 16:26:22 +02:00
Joost van der Sluis
07cba653fa FpDebug: Avoid crash on invalid CFI-information 2022-06-29 10:02:56 +02:00
Joost van der Sluis
62145cd833 FpDebug: Use Dwarf Call Frame Information (CFI) for stack-tracing when available. Refactored some stuff to be able to place it in a separate unit. 2022-06-28 23:09:34 +02:00
Pascal Riekenberg
2bc0a9b371 Debugger: added support for TThread.NameThreadForDebugging 2022-06-28 07:35:40 +02:00
Martin
1c008e121d Debugger: improve SysVarToLStr - convert fields of structures too / array in Inspector 2022-06-27 22:34:08 +02:00
Martin
131d1062df Debugger: allow calling SysVarToLStr for variants (via user defined type-names) 2022-06-23 13:54:18 +02:00
Martin
943ebed455 LazDebuggerFp, FpDebug: Fix mem leak in watch-eval calling functions. 2022-06-21 20:08:47 +02:00
Martin
f606986f1b LazDebuggerFp, FpDebug: Enable watch-eval calling functions with records as param (Win-64/32 / Linux-64) 2022-06-21 00:29:07 +02:00
Martin
b014798858 LazDebuggerFp, FpDebug: Enable watch-eval calling function with strings as param/result (only DWARF 3 / up) 2022-06-21 00:29:07 +02:00
Martin
63a6ce4f32 FpDebug: added IFDEF $INLINE OFF 2022-06-21 00:06:04 +02:00
Martin
ae8bbb1cd6 FpDebug: Refactor TFpDbgInfoCallContext (add "AddParam" / remove Dbg-Process from "CreateParamSymbol") 2022-06-21 00:06:04 +02:00
Martin
bba0a43742 FpDebug: Refactor TFpSymbolDwarfFunctionResult, don't reload data from info-entry - use existing type 2022-06-21 00:06:03 +02:00
Martin
4d3a8af105 FpDebug: Fix uninitialized result in watch-to-intf 2022-06-18 18:08:08 +02:00
Marc
1966405611 FpDebug: Initialize mask register 2022-06-15 22:52:56 +02:00
Martin
e2f50ee30d FpDebug: fixed memory leak in FindExportedSymbolInUnit 2022-06-13 22:05:22 +02:00
Martin
90453ce72b Debugger: Inspect-Win, implement paging for large arrays 2022-06-12 22:14:12 +02:00
Martin
0b051af509 IDE, FpDebug: evaluate more sub-items for Inspect Dialog. 2022-06-12 22:14:12 +02:00
Martin
f65d3b93ee Debugger: FpDebug, LazDebuggerIntf, Inspect-Win, basic distinction for proc/func/ref types. 2022-06-12 22:14:12 +02:00
Marc
d942d2ec7f Revert "FpDebug: Handle exceptions in disassembler", since the disassember doesn't generate exceptions anymore
This reverts commit 96271ad5c6.
2022-06-12 18:09:20 +02:00
Marc
9c4acef131 FpDebug: Fix check in groupP and change exceptions into asserts 2022-06-12 18:06:07 +02:00
Martin
41cb28febf FpDebug: fix crash on nil object 2022-06-12 11:43:05 +02:00
Martin
96271ad5c6 FpDebug: Handle exceptions in disassembler 2022-06-10 15:41:58 +02:00
Martin
f2cbe3d582 FpDebug: PascalParser fix nil object access. 2022-06-09 17:46:25 +02:00
Martin
b0de3bcc01 FpDebug: Use PrettyPrinter and rdkPrePrinted for (nested) not-yet-implemented types (LazDebuggerIntf) 2022-06-09 17:46:24 +02:00
Martin
e7b23f98d0 LazDebuggerIntf, FpDebug: add array and structure types 2022-06-09 17:46:23 +02:00
Martin
e3d41a28e0 FpDebug: Provide access to internal nested type info 2022-06-09 17:46:23 +02:00
Martin
01a6b1dd5f DebuggerIntf, FpDebug: add boolean 2022-06-06 21:08:57 +02:00
Martin
19e0cbf641 DebuggerIntf, FpDebug: add char/widechar 2022-06-06 20:54:36 +02:00
Marc
16321fbd3e FpDebug: Fix range error 2022-05-31 21:47:04 +02:00
Marc
3052c2b048 FpDebug: Add AVX512 extensions of exiting instructions 2022-05-30 22:56:04 +02:00
Marc
86871bc4a7 FpDebug: Clear SIMD flags by default 2022-05-30 22:56:03 +02:00
Marc
fbda5d361c FpDebug: Add load/save option to asmtest 2022-05-30 22:56:02 +02:00
Marc
1e7b32ab20 FpDebug: Split register type enum into register family and operand size as register size 2022-05-30 22:56:02 +02:00
Marc
5d21207723 FpDebug: Replace opcode set with all (new) opcodes 2022-05-30 22:56:01 +02:00
mattias
3140a3db66 fpdebug: added mips and misel 2022-05-29 20:09:45 +02:00
mattias
9e762cde89 udpated makefiles 2022-05-29 19:34:19 +02:00
Martin
fba36b9318 FpDebug: More fixes for "Solved AV in StateMachineValid" 239b2be664 / crash in asm window 2022-05-16 23:10:15 +02:00
Martin
0426064e8f LazDebuggerIntf, FpDebug: add enum/sets 2022-05-16 23:10:14 +02:00
Martin
f190c1ff0b FpDebug: remove empty code 2022-05-16 23:10:14 +02:00
Martin
3ea0e03d3b FpDebug: Improve char/widechar from expression/const - implement size and ord-value 2022-05-16 23:10:14 +02:00
Martin
2991d62a16 FpDebug: refactor wait for comp-unit. (check address before enter WaitForScopeScan) 2022-05-16 17:03:05 +02:00
Martin
8baaf99684 FpDebug: Improve fix for dangling pointer to FScanAllWorker.FScanScopeList. 2022-05-16 17:03:05 +02:00
Joost van der Sluis
be75a9d85e FpDebug: Fixed mistake in attempt to solve AV in StateMachineValid 2022-05-13 22:50:52 +02:00
Joost van der Sluis
239b2be664 FpDebug: Solved AV in StateMachineValid 2022-05-13 20:27:54 +02:00
Martin
7d9af9a857 FpDebug: disable warning "case not covering all values" 2022-05-12 21:19:34 +02:00
Martin
ef032fca2d FpDebug: provide trace debugln for errors in worker threads 2022-05-12 21:19:34 +02:00
Martin
315bb059d8 FpDebug: fix overflow in stack eval 2022-05-09 23:48:30 +02:00
Martin
915fbfa830 FpDebug: Workaround for dangling pointer to FScanAllWorker.FScanScopeList (in FCompUnitScope.FScopeListPtr), set by FScanScopeList.BuildList. 2022-05-09 01:22:32 +02:00
martin
5a01f79d1c FpDebug: Find line info when dwarf subprogram-tag is missing. Use line info with linker info. This fixes stepping into old-style "TFoo = object ... end" 2022-05-05 02:46:33 +02:00
Joost van der Sluis
abad276cd4 FpDebug: Fixed 'Unable to open file SYSV00000000' exceptions 2022-05-01 23:08:45 +02:00
Martin
94ae766164 FpDebug: PascalParser, allow $ sign in identifiers. Required for mangled classnames / specialized generics ... 2022-04-22 12:04:46 +02:00
Martin
ca8c6a84e2 FpDebug: Fix PascalParser.ResetEvaluation 2022-04-22 12:04:46 +02:00
Joost van der Sluis
09d676c6ba FpDebug: Ability to request a strings codepage 2022-03-26 20:13:00 +01:00
Martin
76d9771c34 Debugger: More LazDebuggerIntf. Add/Improve numeric, pointer, float and string watches 2022-03-24 00:39:04 +01:00
Martin
1ba6c2f11a FpDebug: Fix for FpGdbmi (Windows). FpGdbmi does not knew the LoadedAddr, replace the nil value with the default ImageBase. 2022-03-24 00:39:03 +01:00
Martin
4f8efdd21f FpDebug: fix warnings. 2022-03-24 00:39:03 +01:00
Martin
22ef2d781f FpDebug: optimization 2022-03-24 00:39:02 +01:00
Martin
c7e123fd8d FpDebug: Fix stack-overflow for types with recursive declaration. 2022-03-24 00:39:02 +01:00
Martin
624696270b FpDebug: Fix QuoteWideText => wrong result len 2022-03-04 00:47:32 +01:00
Martin
625e655423 FpDebug: fix Memleak. Introduced in "PascalPrinter, Automatically deref pointers to string types. Issue #39559" / a400e1f8c7 2022-03-04 00:37:27 +01:00
Martin
95a5c05edc FpDebug: Do not process data, after MemRead failed. 2022-03-03 00:46:11 +01:00
Martin
27f4c50dbd FpDebug: Fix RangeCheck, TByteArray has an upper limit of 32k. 2022-03-03 00:46:11 +01:00
Martin
a400e1f8c7 FpDebug: PascalPrinter, Automatically deref pointers to string types. Issue #39559 2022-02-26 04:01:32 +01:00
Martin
0e6769ac99 FpDebug, LazDebuggerFp: Implement tracking modified CPU registers (top stack-frame only) 2022-02-25 20:25:01 +01:00
mattias
26c9421318 updated Makefiles 2022-02-24 12:55:45 +01:00
Martin
8335731953 FpDebug: Fixed uninitialized variables. 2022-02-22 01:01:40 +01:00
Marc
9ba59b2dfc FpDebug: Refactor TX86AsmDecoder.DoDisassemble into separate TX86Disassembler object 2022-02-20 16:49:46 +01:00
Marc
81f2319e01 FpDebug: Prepare SMID decoding for (E)VEX extensions 2022-02-17 23:53:43 +01:00
Marc
4e6bf84be4 FpDebug: Fix typo in cvttss2si, cvttsd2si, cvtss2si & cvtsd2si instruction 2022-02-17 23:53:43 +01:00
Martin
2333696004 FpDebug: Ensure internal breakpoint is freed, if cmd is finished. Add asserts 2022-02-10 23:30:23 +01:00
Martin
6993390bab FpDebug: Improve Stack after calling TProc(nil) / Call to code not in apps memory 2022-02-09 19:30:40 +01:00
Martin
b6be0ae622 FpDebug: Improve Stack after calling TProc(nil) / Call to code not in apps memory 2022-02-09 15:39:26 +01:00
Marc
11992ed7d7 FpDebug: Fix decoding of extended general purpose registers 2022-02-06 17:52:20 +01:00
Marc
402360049e FpDebug: Fix compilation of asmtest 2022-02-06 17:50:10 +01:00
Martin
2e8783e5e0 FpDebug: fix uninitialized return value 2022-02-01 17:18:19 +01:00
Martin
4482e0ddb8 FpDebug: add {$else} for targets not matched by any of the ifdef 2022-01-26 12:58:31 +01:00
Martin
220c850843 FpDebug: Windows, Fix addresses for non-Dwarf symbols. TFpSymbolInfo does not use the RelocationOffset, so addresses will be directly mapped to their loaded location. 2022-01-16 16:20:28 +01:00
Martin
0e5ea13b8a FpDebug: Add {$IFDEF TEST_FPDEBUG_SINGLE_THREAD} so the code can be run single-threaded. 2022-01-10 14:08:38 +01:00
Martin
d1ac568e96 Debugger: New package LazDebuggerIntf / Replace TWatchValue with TWatchValueIntf 2022-01-10 14:08:37 +01:00
Joost van der Sluis
c8feb2d0e8 FpDebug: Replaced some Pascalish code to perform pointer calculations without range-overflows with code with range-checking disabled 2022-01-02 00:38:52 +01:00
Joost van der Sluis
a05f75154d * FpDebug: Fix for handling processes that do not provide a real file-handle. 2022-01-01 17:29:43 +01:00
Joost van der Sluis
7750772722 FpDebug: Fix for handling libraries that do not provide a real file-handle. 2021-12-30 20:36:04 +01:00
ccrause
218ea083c3 DW_LINE_set_address and target address read operations should respect the target address size. 2021-12-29 14:52:02 +02:00
Joost van der Sluis
4e4c402b62 FpDebug: Remove breakpoints bound to a specific library when this library gets unloaded 2021-12-23 00:32:41 +01:00
Joost van der Sluis
e0c4d9c77b FpDebug: cleanup and explanation of the difference between the ImageBase, RelocationOffset and LoadedTargetImageAddr 2021-12-16 00:35:18 +01:00
Joost van der Sluis
8205a04199 FpDebug: On Windows the RelocationOffset can only be calculated after the file-header has been read. So the whole logic to obtain the RelocationOffset out of the LoadedTargetImageAddr and ImageBase is refactored 2021-12-15 01:21:10 +01:00
Maxim Ganetsky
e71c784ab0 Translations: Brazilian Portuguese translation update by Marcelo B Paula, issue #39516 2021-12-15 02:21:23 +03:00
Joost van der Sluis
190a7267c4 FpDebug: Fixed compilation on Windows 2021-12-14 10:35:59 +01:00
Joost van der Sluis
70d007f0de FpDebug: Differentiate between the BaseAddr and the RelocationOffset 2021-12-13 23:18:10 +01:00
Martin
842abf97c1 FpDebug: Remove some asserts that were to strict. The check is done in ReadThreadState. If that has already been done, the functions do not need the requirement. 2021-12-12 21:00:28 +01:00
Martin
85c71832e3 FpDebug: Win64 SEH finally sub-routines, show correct line for resolved symbol 2021-12-12 21:00:27 +01:00
Martin
a1c6e559e1 LazDebuggerFp: Cleanup compiler hints 2021-12-12 21:00:27 +01:00
Martin
a4b23e0b2a FpDebug: PascalParser, Fix parsing float on localized PC. 2021-12-12 21:00:21 +01:00
Joost van der Sluis
2a51f03e2b FpDebug fixed calculation of addresses, got broken in commit 5ff2a7d17c 2021-12-11 13:38:30 +01:00
Maxim Ganetsky
b2c460ee34 FpDebug: updated Russian translation 2021-12-11 01:23:43 +03:00
Joost van der Sluis
5ff2a7d17c FpDebug: Calculate the relocated addresses of libraries 2021-12-10 20:17:46 +01:00
Joost van der Sluis
124083f794 FpDebug: Do not crash on unrecognized binary-formats 2021-12-10 17:57:07 +01:00
Joost van der Sluis
1dbef448b0 FpDebug: Removed spaces at start of the line in error-messages. 2021-12-10 17:31:33 +01:00
Martin
5c22ff5ad2 FpDebug: Fix stepping does not stop at next line (seen on Win7 only / Maybe issue #39383).
When checking if a step-in/over returned from going over a called proc (using the hidden-break), do not trust the BasePointer.
2021-12-10 00:29:26 +01:00
Martin
343eb4e47c FpDebug: PascalParser, fixed parsing float. In Pascal the comma is a list-separator. It can not be decimal-point. So using the locale "DecimalSeparor" will get wrong results. 2021-12-09 18:17:57 +01:00
Martin
e618b09804 LazDebuggerFp: Fix Stepping and threads / Ensure loop exits with correct EventType 2021-12-09 18:17:56 +01:00
Maxim Ganetsky
b291a31f11 FPDebug: fixed compilation on Windows 2021-12-09 01:38:49 +03:00
Joost van der Sluis
e9f1ffb855 FpDebug: Load libraries on Linux, and skip incompatible binaries. Also on Windows, for consistency and stability 2021-12-08 22:18:04 +01:00
Joost van der Sluis
b9b35b4252 FpDebug: Set the TDbgImageReader.LoadedTargetImageAddr at creation, or else parts might already been read when it is set. 2021-12-08 00:43:17 +01:00
Joost van der Sluis
de0974f29e FpDebug: Removed TDbgInstance.AddrOffset and other old attempts to relocate libraries properly 2021-12-08 00:43:17 +01:00
Joost van der Sluis
f073c52428 FpDebug: Search for line-information not only within the executable, but also in the loaded libraries 2021-12-07 23:31:41 +01:00
Martin
9877946d86 FpDebug: reduced debugln 2021-12-07 23:21:42 +01:00
Martin
499026c519 FpDebug: Win64 SEH finally sub-routines, find the symbol for the procedure actually owning the finally block 2021-12-07 22:56:11 +01:00
Martin
df98551a5f FpDebug: Implement finding "address for line" before/after the requested line, if there is no entry for the request. 2021-12-07 20:35:49 +01:00
Martin
7534833eb6 FpDebug: Fixed passing dangling pointer. (Currently not used by LazDebuggerFp when doing deExitProcess) 2021-12-07 15:41:58 +01:00
Martin
07e3817870 FpDebug: fix mem leak. Libraries were not freed on Unload. 2021-12-06 00:40:25 +01:00
Martin
7e06003d9d FpDebug: Fix race condition. After FQueue.RemoveThread(Self) the Queue (if waiting in TerminateAllThreads) can destroy itself. So it must no longer be accessed. 2021-12-05 22:44:04 +01:00
Martin
b3e07ba2b5 FpDebug: fix for logging 2021-12-05 22:44:04 +01:00
Joost van der Sluis
957f76456c FpDebug: Detect Dwarf-5 debug headers and skip unsupported sections 2021-12-05 18:26:09 +01:00
Joost van der Sluis
bc4718efae FpDebug: Ability to pass multiple libraries to OnLibrary(Un)LoadedEvent and detection of loading of libraries on Linux 2021-12-05 01:46:45 +01:00
Martin
d8188bb780 FpDebug: Show "class var" if in current context (no class/instance-name prefix). 2021-12-01 19:55:39 +01:00
Martin
a365f46170 FpDebug/FPD: Add FpDbgDwarfFreePascal - This activates the FPC specific dwarf interpretation. 2021-11-28 10:53:43 +01:00
Martin
b03c9ccbb7 Merge branch 'fpd1' into 'main'
Fix compilation of fpdebug\app\fpd

See merge request freepascal.org/lazarus/lazarus!49
2021-11-28 10:49:11 +01:00
Maxim Ganetsky
738e48c6b7 Translations: French translation update by Gilles Vasseur, issue #39487 2021-11-26 03:47:29 +03:00
Martin
ad58ebedf8 FpDebug, CmdLineDebuggerBase: Remove "design time".... / Add missing changes in packagefile 2021-11-25 21:01:06 +01:00
Martin
fcd147a0bf FpDebug, CmdLineDebuggerBase, LazDebugTestBase: Remove "design time", those are run-time packages (they are for use in the IDE, be serving as base classes to other design time packages. But they should not be listed for installation into the IDE on their own. 2021-11-25 12:54:25 +01:00