On Sun, Nov 27, 2005 at 06:24:58PM -0600, Tao Chen wrote:
>
> Thanks Eric, point taken.
> 
> BTW, in this case, I got:
> 
> fifo_open+0x44e(fffffe8000d3bcb0, 2001, ffffffff844c00a8);
> 
> The first arg is vnode_t **vpp.
> How do I simply print a value of an address (fffffe8000d3bcb0), so I can get
> the vnode address in this case?
> "::print" expects symbol information:

You can take the address and use the '/' operator.  i.e:

> fffffe8000d3bcb0/K | ::print vnode_t

Run '::formats' to see a list of acceptable characters and their
associated sizes and types.

> > 0xffffffff8494b4c0::print
> mdb: no symbol information
> 
> I can of course fake a symbol and get the pointer value in the output.
> 
> I must say it's nice to have the v_path in vnode:
> 
> > 0xffffffff8494b4c0::print vnode_t v_path
> v_path = 0xffffffff85195cf8 "/export/share/tc/C/pipe/pipe.file"

Yes, for this particular case you may have been OK with just truss (to
get the file descriptor being read from) and pfiles (which displays the
path information).  But MDB is a handy tool to have around ;-)

- Eric

--
Eric Schrock, Solaris Kernel Development       http://blogs.sun.com/eschrock

Reply via email to