Brian Utterback
2007-Feb-13 20:05 UTC
[dtrace-discuss] How to print kernel global variable.
I am doing some testing on the adjtime syscall, and I want to dump out the value of the kernel variable "timedelta", and I am failing at it. Some of my attempts got "Module is no longer loaded" and some got "Symbol table entry is not a data object" I found some info that dtrace can print out kernel global variable, so what am I missing here? -- blu "Remember ''A Thousand Points of Light''? With a network, we now have a thousand points of failure." ---------------------------------------------------------------------- Brian Utterback - Solaris RPE, Sun Microsystems, Inc. Ph:877-259-7345, Em:brian.utterback-at-ess-you-enn-dot-kom
Adam Leventhal
2007-Feb-14 17:40 UTC
[dtrace-discuss] How to print kernel global variable.
Hi Brian,
The problem is that DTrace won''t let you use a kernel variable if it
can''t
infer the type. Since ''timedelta'' is defined in an assembly
file, we don''t
have CTF data. Feel free to file a bug -- this should be made to work.
I was able to trace ''timedelta'' by getting its address using
mdb and plugging
that into my D script:
# echo timedelta=K | mdb -k
fffffffffbc02930
# dtrace -n BEGIN''{ trace(*(int64_t *)0xfffffffffbc02930ULL);
}''
dtrace: description ''BEGIN'' matched 1 probe
CPU ID FUNCTION:NAME
1 1 :BEGIN 0
Adam
On Tue, Feb 13, 2007 at 03:05:03PM -0500, Brian Utterback
wrote:> I am doing some testing on the adjtime syscall, and I want to
> dump out the value of the kernel variable "timedelta", and I
> am failing at it. Some of my attempts got "Module is no longer
> loaded" and some got "Symbol table entry is not a data
object"
>
> I found some info that dtrace can print out kernel global
> variable, so what am I missing here?
> --
> blu
>
> "Remember ''A Thousand Points of Light''? With a
network, we now have
> a thousand points of failure."
> ----------------------------------------------------------------------
> Brian Utterback - Solaris RPE, Sun Microsystems, Inc.
> Ph:877-259-7345, Em:brian.utterback-at-ess-you-enn-dot-kom
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss at opensolaris.org
--
Adam Leventhal, Solaris Kernel Development http://blogs.sun.com/ahl
Brian Utterback
2007-Feb-14 17:51 UTC
[dtrace-discuss] How to print kernel global variable.
Hmm. IS there anyway to tell dtrace what the type is? Something like the ''-t'' flag to print in mdb? Maybe ''int64_t timedelta'' perhaps? Adam Leventhal wrote:> Hi Brian, > > The problem is that DTrace won''t let you use a kernel variable if it can''t > infer the type. Since ''timedelta'' is defined in an assembly file, we don''t > have CTF data. Feel free to file a bug -- this should be made to work. > > I was able to trace ''timedelta'' by getting its address using mdb and plugging > that into my D script: > > # echo timedelta=K | mdb -k > fffffffffbc02930 > # dtrace -n BEGIN''{ trace(*(int64_t *)0xfffffffffbc02930ULL); }'' > dtrace: description ''BEGIN'' matched 1 probe > CPU ID FUNCTION:NAME > 1 1 :BEGIN 0 > > Adam > > On Tue, Feb 13, 2007 at 03:05:03PM -0500, Brian Utterback wrote: > >> I am doing some testing on the adjtime syscall, and I want to >> dump out the value of the kernel variable "timedelta", and I >> am failing at it. Some of my attempts got "Module is no longer >> loaded" and some got "Symbol table entry is not a data object" >> >> I found some info that dtrace can print out kernel global >> variable, so what am I missing here? >> -- >> blu >> >> "Remember ''A Thousand Points of Light''? With a network, we now have >> a thousand points of failure." >> ---------------------------------------------------------------------- >> Brian Utterback - Solaris RPE, Sun Microsystems, Inc. >> Ph:877-259-7345, Em:brian.utterback-at-ess-you-enn-dot-kom >> _______________________________________________ >> dtrace-discuss mailing list >> dtrace-discuss at opensolaris.org >> > >