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