Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-19 Thread Marc Santhoff
On Mo, 2014-03-17 at 22:35 +0100, Sven Barth wrote:
> Am 17.03.2014 20:23 schrieb "Marc Santhoff" :
> > > The IDE doesn't rebuild RTL , or fpc packages. But if you have your own
> > > fpc build, you can always rebuild and install it with debug info.
> >
> > I have no own build but the sources. Reading the FAQ it should work to
> > cd to .../rtl/unix, build with -gl, and afterwards install the new ppu
> > to the same location as the compiler.
> 
> You should merely go to $fpcsrc/rtl and do "make clean all OPT=-gl". Your
> source should be of the same compiler version as the compiler you build
> with. Also if you use a unit (or a package) that depends on any of the
> recompiled units that will need to be recompiled as well. So for RTL I
> would suggest you to only copy the Serial unit as dependencies on that
> should be rather low. Additionally you won't be annoyed by having the
> debugger step all helper routines used by the compiler.

Makes lots of sense, I think I'll go the way of copying only serial.pp.

> Note: the location "same as compiler" would be wrong. You need to copy the
> unit to the location where the "normal" serial.ppu and serial.o are stored
> (and you should make a backup of course). Normally thus should he something
> like /usr/lib/fpc/2.6.4/units/i386-linux/rtl or so...

OK, especially because the compiler installation(s) are in my home dir.

> >
> > I'd like better if I could switch a standard version and a debugging
> > version of the RTL. If it works in general this could be done by some
> > conditionals in .fpc.cfg, I think.
> 
> In that case you should recompile the complete source (inside the $fpcsrc
> directory) with OPT=-gl and then you'll need to install the units to a
> different location (e.g. /usr/lib/2.6.4/units-dbg) and then adjust the
> fpc.cfg to use a different set of paths if you specify a special define on
> the command line (e.g. -dDEBUG_UNITS)

OK, at least this mail is getting archived for being at hand when
needed. This serial port thingy is the first time ever I really need to
twiddle the RTL.

Danke Sven!

-- 
Marc Santhoff 


--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-19 Thread Marc Santhoff
On Mo, 2014-03-17 at 23:18 +, Mark Morgan Lloyd wrote:
> Marc Santhoff wrote:
> > On Mo, 2014-03-17 at 17:22 +, Mark Morgan Lloyd wrote:

> > But some questions popping up:
> > In the patch report you write SerFlush() is non-destructive and the new
> > SerFlushInput/Output() are destructive.
> > 
> > What does this mean exactly?
> 
> I'm working from memory here. SerFlush() tried to do a sync(), which was 
> considered to be pointless so is now marked deprecated. If you really do 
> want to do this, then use SerSync().
> 
> SerDrain() waits until pending output has been sent i.e. is 
> non-destructive, SerFlushInput() and SerFlushOutput() both clear buffers 
> so are destructive.

OK, that matches my memory.

> Please note that these are basically very thin wrappers around the unix 
> (Linux/Solaris) API.

Understood, so the system man pages and maybe Stevens are my friends.

Many thanks!

-- 
Marc Santhoff 


--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Mark Morgan Lloyd

Marc Santhoff wrote:

On Mo, 2014-03-17 at 17:22 +, Mark Morgan Lloyd wrote:

Marc Santhoff wrote:

Hi,

the FAQ gives instructions for debugging FCL from within lazarus.

http://wiki.lazarus.freepascal.org/Lazarus_Faq#How_can_I_debug_FCL_components_from_packages_with_Lazarus

Does this work for RTL packages as well?

I need to set breakpoints inside serial.pp to see what data SerRead and
SerWrite really get.
I'm fairly sure that I used Lazarus to set breakpoints in that unit, but 
when I was working on it I'd have been using a copy in my project's 
working directory.


The patch at http://mantis.freepascal.org/view.php?id=18946 contains a 
test program that you might find useful, it's quirky but I used it 
heavily when testing the unit for Linux/Solaris/Windows.


Many thanks, it will be useful. :)

But some questions popping up:
In the patch report you write SerFlush() is non-destructive and the new
SerFlushInput/Output() are destructive.

What does this mean exactly?


I'm working from memory here. SerFlush() tried to do a sync(), which was 
considered to be pointless so is now marked deprecated. If you really do 
want to do this, then use SerSync().


SerDrain() waits until pending output has been sent i.e. is 
non-destructive, SerFlushInput() and SerFlushOutput() both clear buffers 
so are destructive.


Please note that these are basically very thin wrappers around the unix 
(Linux/Solaris) API.


--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Sven Barth
Am 17.03.2014 20:23 schrieb "Marc Santhoff" :
> > The IDE doesn't rebuild RTL , or fpc packages. But if you have your own
> > fpc build, you can always rebuild and install it with debug info.
>
> I have no own build but the sources. Reading the FAQ it should work to
> cd to .../rtl/unix, build with -gl, and afterwards install the new ppu
> to the same location as the compiler.

You should merely go to $fpcsrc/rtl and do "make clean all OPT=-gl". Your
source should be of the same compiler version as the compiler you build
with. Also if you use a unit (or a package) that depends on any of the
recompiled units that will need to be recompiled as well. So for RTL I
would suggest you to only copy the Serial unit as dependencies on that
should be rather low. Additionally you won't be annoyed by having the
debugger step all helper routines used by the compiler.

Note: the location "same as compiler" would be wrong. You need to copy the
unit to the location where the "normal" serial.ppu and serial.o are stored
(and you should make a backup of course). Normally thus should he something
like /usr/lib/fpc/2.6.4/units/i386-linux/rtl or so...

>
> I'd like better if I could switch a standard version and a debugging
> version of the RTL. If it works in general this could be done by some
> conditionals in .fpc.cfg, I think.

In that case you should recompile the complete source (inside the $fpcsrc
directory) with OPT=-gl and then you'll need to install the units to a
different location (e.g. /usr/lib/2.6.4/units-dbg) and then adjust the
fpc.cfg to use a different set of paths if you specify a special define on
the command line (e.g. -dDEBUG_UNITS)

Regards,
Sven
--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Marc Santhoff
On Mo, 2014-03-17 at 18:03 +, Martin Frb wrote:
> On 17/03/2014 16:40, Marc Santhoff wrote:
> > the FAQ gives instructions for debugging FCL from within lazarus.
> >
> > http://wiki.lazarus.freepascal.org/Lazarus_Faq#How_can_I_debug_FCL_components_from_packages_with_Lazarus
> >
> > Does this work for RTL packages as well?
> 
> The IDE doesn't rebuild RTL , or fpc packages. But if you have your own 
> fpc build, you can always rebuild and install it with debug info.

I have no own build but the sources. Reading the FAQ it should work to
cd to .../rtl/unix, build with -gl, and afterwards install the new ppu
to the same location as the compiler.

I'd like better if I could switch a standard version and a debugging
version of the RTL. If it works in general this could be done by some
conditionals in .fpc.cfg, I think.

Where I'm not sure is if the build RTL build and install works the same
as for lazarus packages.

> Once the debug info is there it will work.

I'll try.

-- 
Marc Santhoff 


--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Marc Santhoff
On Mo, 2014-03-17 at 17:22 +, Mark Morgan Lloyd wrote:
> Marc Santhoff wrote:
> > Hi,
> > 
> > the FAQ gives instructions for debugging FCL from within lazarus.
> > 
> > http://wiki.lazarus.freepascal.org/Lazarus_Faq#How_can_I_debug_FCL_components_from_packages_with_Lazarus
> > 
> > Does this work for RTL packages as well?
> > 
> > I need to set breakpoints inside serial.pp to see what data SerRead and
> > SerWrite really get.
> 
> I'm fairly sure that I used Lazarus to set breakpoints in that unit, but 
> when I was working on it I'd have been using a copy in my project's 
> working directory.
> 
> The patch at http://mantis.freepascal.org/view.php?id=18946 contains a 
> test program that you might find useful, it's quirky but I used it 
> heavily when testing the unit for Linux/Solaris/Windows.

Many thanks, it will be useful. :)

But some questions popping up:
In the patch report you write SerFlush() is non-destructive and the new
SerFlushInput/Output() are destructive.

What does this mean exactly?

>From my memory using "flush" on a file descriptor is used to force
writing the pending contents through to the disk or file or whatever is
connected.
Regarding serial ports there mostly is a hardware function for emptying
the read oder write queue while throwing away anything in there. Is that
the difference in the flushing you're talking about?

-- 
Marc Santhoff 


--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Martin Frb

On 17/03/2014 16:40, Marc Santhoff wrote:

the FAQ gives instructions for debugging FCL from within lazarus.

http://wiki.lazarus.freepascal.org/Lazarus_Faq#How_can_I_debug_FCL_components_from_packages_with_Lazarus

Does this work for RTL packages as well?


The IDE doesn't rebuild RTL , or fpc packages. But if you have your own 
fpc build, you can always rebuild and install it with debug info.


Once the debug info is there it will work.

--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


[Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Marc Santhoff
Hi,

the FAQ gives instructions for debugging FCL from within lazarus.

http://wiki.lazarus.freepascal.org/Lazarus_Faq#How_can_I_debug_FCL_components_from_packages_with_Lazarus

Does this work for RTL packages as well?

I need to set breakpoints inside serial.pp to see what data SerRead and
SerWrite really get.

TIA,
Marc

-- 
Marc Santhoff 


--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Re: [Lazarus] debugging parts of rtl from within lazarus

2014-03-17 Thread Mark Morgan Lloyd

Marc Santhoff wrote:

Hi,

the FAQ gives instructions for debugging FCL from within lazarus.

http://wiki.lazarus.freepascal.org/Lazarus_Faq#How_can_I_debug_FCL_components_from_packages_with_Lazarus

Does this work for RTL packages as well?

I need to set breakpoints inside serial.pp to see what data SerRead and
SerWrite really get.


I'm fairly sure that I used Lazarus to set breakpoints in that unit, but 
when I was working on it I'd have been using a copy in my project's 
working directory.


The patch at http://mantis.freepascal.org/view.php?id=18946 contains a 
test program that you might find useful, it's quirky but I used it 
heavily when testing the unit for Linux/Solaris/Windows.


--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

--
___
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus