is dtrace usable?

Alexander Leidinger Alexander at Leidinger.net
Tue Mar 9 14:16:19 UTC 2010


Quoting John Baldwin <jhb at freebsd.org> (from Tue, 9 Mar 2010 07:47:00 -0500):

> On Tuesday 09 March 2010 3:27:09 am Alexander Leidinger wrote:
>> Quoting John Baldwin <jhb at freebsd.org> (from Mon, 8 Mar 2010  
>> 10:00:12 -0500):
>>
>> > On Saturday 06 March 2010 11:00:12 am Robert Watson wrote:
>> >> On Sat, 6 Mar 2010, Alexander Leidinger wrote:
>> >>
>> >> >> Take a look at the DTrace configuration information here:
>> >> >>
>> >> >>     
>> http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/dtrace.html
>> >> >
>> >> > I've just reread it (despite the fact that I already used it). Some
>> >> > comments:
>> >> >
>> >> > Last time I tried, I didn't see any problems by adding
>> >> >  makeoptions     WITH_CTF=yes
>> >> > to the kernel config instead of doing
>> >> >  make WITH_CTF=1 kernel
>> >> >
>> >> > Did I miss something, and if not, shouldn't we tell about the
>> >> > makeoptions part instead (a kernel rebuild later will not cause
>> >> > trouble when someone forgets to do the WITH_CTF part as it is already
>> >> > in the kernel makefile)?
>> >>
>> >> I'll leave John to answer this one, CC line broadended.
>> >
>> > I would be very surprised if 'makeoptions WITH_CTF=yes' worked.  The many
>> > times I and others have tried it it did not work.  Do you have a  
>> log of your
>> > build showing the ctfconvert and ctfmerge command lines?
>>
>> I do not have a log around, it has been a while since I did something
>> with dtrace (a year ago) and I can not remember that I always added
>> WITH_CTF on a build (but it was about SDT probes, not FBT probes, in
>> case it matters).
>>
>> I had a look again, WITH_CTF=yes is one of the first lines in the
>> Makefile, and /usr/share/mk/sys.mk has "if !defined(WITH_CTF)". "make
>> -V WITH_CTF" shows "yes", but "make -V NO_CTF" shows "1". This is
>> strange, isn't it? I would expect that NO_CTF is undefined. Is this a
>> bug in make, or a bug in the man page (neither in the description of
>> the different kinds of variables, nor in the description of "defined"
>> is something mentioned explaining this behavior).
>
> It is defined behavior.  From the 2nd and 3rd paragraphs of the make(1)
> manual page:
>
>      First of all, the initial list of specifications will be read from the
>      system makefile, sys.mk, unless inhibited with the -r option.  The stan-
>      dard sys.mk as shipped with FreeBSD also handles make.conf(5), the
>      default path to which can be altered via the make variable __MAKE_CONF.
>
>      Then the first of BSDmakefile, makefile, and Makefile that can be found
>      in the current directory, object directory (see .OBJDIR), or search path
>      (see the -I option) will be read for the main list of  
> dependency specifi-
>      cations.  A different makefile or list of them can be supplied  
> via the -f
>      option(s).  Finally, if the file .depend can be found in any of the
>      aforesaid locations, it will also be read (see mkdep(1)).
>
> From this you can see that sys.mk is included and parsed before 'Makefile',
> so the WITH_CTF=yes is not set until after sys.mk has been parsed.

I think we need to find a different solution for this. The need to  
specify WITH_CTF at the command line is very error prone. :(

Bye,
Alexander.

-- 
Every time I lose weight, it finds me again!

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-stable mailing list