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 >> > >