On Tue, Aug 01, 2006 at 10:13:02AM -0700, Garrett D'Amore wrote:
> Today I was trying to debug a problem with the cardbus driver in b44
> using kmdb, and I tried to set a break point using the delayed syntax
> that I recall using back in the Solaris 8 days:
> 
> boot kadb -d
> 
> boots and leaves me in the kmdb prompt, which I then type:
> 
> cardbus`cardbus_rootnex_map+8:b
> 
> To set a delayed breakpoint in the cardbus_rootnex_map function in the
> cardbus module.  Imagine my surprise when instead of taking the
> breakpoint (note that cardbus is not loaded as show by ::modinfo), I get
> a complaint from kmdb that the symbol cannot be resolved.

::bp cardbus`cardbus_rootnex_map+8

is the syntax you want.  I'm fairly sure you needed to do:

cardbus#cardbus_rootnex_map+8:b    **kadb only, doesn't work in kmdb**

in kadb to do a deferred breakpoint;  the ` syntax you used wouldn't work.
(not that the '#' syntax works in kmdb.)

> Of course it can't be resolved!  I'm trying to use a delayed break
> point, the module isn't loaded yet.
> 
> The cardbus_rootnex_map function is declared static in the cardbus.c
> module.  Back in Solaris 8 days, kadb had no problem with static functions.
> 
> Am I just being a dunce? Has kadb/kmdb changed somehow significantly so
> that it can't resolve static symbols?

Yes;  the way you do a deferred breakpoint has changed.  This is all documented
in Appendix C of the Solaris Modular Debugger Guide for Solaris 10 and later.
A current link (which will no doubt become defunct in about a month) is:

http://docs.sun.com/app/docs/doc/816-5041/6mb7ae3lv?a=view

> Note also that I'm doing this on a US-3i platform for which uname -i is
> not "standard".  (TAD,Viper).  So the /platform links aren't set up. 
> Solaris boots fine this way, but does kmdb need some kind of link
> somewhere?  If so I'd appreciate any advice.  I didn't see anything
> obvious /platform for it.

No, I don't think that's necessary.

Cheers,
- jonathan

-- 
Jonathan Adams, Solaris Kernel Development

Reply via email to