I've build the IDE with default settings but I get the same behaviour.
Uninstalled 4.2 and installed 4.4 from scratch. I still see the system units: lazloggerbase, application.inc, fgl, etc.
Any idea?
Default settings may include debugging for those units.
1) menu: Tools > Configure build lazarus
- Select a non debug profile
- make sure "custom options" does not contain any -g -gw -gl -gs ...
2) Open package LazUtils, Lcl, LclBase
Go to package options of each, and ensure under "debugging" that "generate debug info" is OFF
3) In your project "project options"
page "additions and overrides" => make sure you did not add overrides for those packages above
(most likely you have not / but just for completeness)
4) if you edited fpc.cfg => well then you would know you did ...
I have the same problem. I don't want to trace into handlers of relative basic units (system, objpas,sysutils, classes and some generics container units etc). Default I would want to be able to debug the more peripheral units (most of packages/)
I tried to build everything with debuginfo, and then strip those units, but that doesn't work. The debugcode of other units refers the debug code of the core units, and linking fails.
Yes... to both/all.
1) Unlike LCL/LazUtils this cannot be separated that easily.
2) On linux debug info indeed refers cross unit / on window your approach would maybe work
you might try to run make for complier and rtl, without debug info. And then run make for packages only (and have debug info on). If package are build when the rtl .o / .ppu don't have the debug info, then they should likely not refer to it....
Though: NOT TESTED
Or maybe you can strip just line info, but not the other debug info.... (not sure if that would be enough)
Not sure how....
But strip (or was it objcopy) has some options... I noticed that when I saw the compiler calling them to extract debug info for "external debug info"
3) Yes, the debugger will eventually need "exclusion lists" for "step in" => those can be based on unit names and function names.
But that will be a while...
However, if you do step into any such routine you can
- Immediately Step out / shift F8
That will bring you back INTO the calling line (not after).
=> That means
self.CallVirtualFoo;
- F7: Will step into _FPC_...object_check...
- Shift F8 (step out) returns to that line
- F7 (again) will now step into the CallVirtualFoo
Well, if there are other _fpc_check.... then you have to repeat that...