Greg 'groggy' Lehey wrote:

> There will always be situations where the debugger can't catch the
> problem in time.  Then it's up to you to guess and put a breakpoint
> just before it freezes; this can be an interative process.  The method
> requiring the least thought is to single step over function calls
> until the system freezes.  Then you know which function it happened
> in.  Reboot, set a breakpoint in that function, and repeat.

What is being a real bear on this one, is the fact that it is not my
code that is generating the panic. I assume I'm doing something bad
that some other part of the kernel finds objectionable. Makes it hard
to know where to set the break point...

>>>Debugging hasn't changed much since 4.3BSD.
>>
>>True enough, but *what* I am debugging sure has changed. KLD for
>>example did not exist the last time I did kernel programming.
> 
> 
> Debugging klds is a little more difficult.  You need to use gdb's
> add-symbol-file command to get the symbols.  There are some functions
> which help, but the good one hasn't been committed yet.  Take a look
> at http://people.freebsd.org/~gallatin/gdbmods.

I had found a refrence to the add-symbol-file, but had not tried it,
mostly because I can't get a core file... guess I will have to look
into the remote debugger.


>>Now I want to do a kldunload and have the driver dettach,
>>the MOD_UNLOAD is called, but the detach() is never called. What
>>do I need to do to get the detach() to be called? Is there an
>>opposite to BUS_ADD_CHILD()? I tried device_delete_child()... gave
>>me a panic and no core and devclass_delete_driver()... returned
>>an error (ENOENT, I think)
> 
> 
> Hmm, haven't had that particular problem, but my klds don't handle
> hardware.  Have you looked at similar code in other drivers?

Well, it turned out that this was a problem caused by the same root
problem that was causing my panics in strange places. Once I tracked
down my rogue pointer, things became much better behaved. OK, I
admit it, I have been programming in Java for the last two years
and it is taking my brain a while to adjust to pointers again :-)
Moral of the story, don't stomp your device_t, not that I was
doing it intentionaly...

Now, for a more "meaning of life, the universe and device drivers"
type set of question:

For a static driver, we have the config flags that can be used to
modify the drivers behaviour, is sysctl the equivalent for KLD
modules? If so, should a person support both or are the config
flags considered depricated? Is there any naming convention for
the MIB or is _driver_._option_ acceptable?

-stacy

-- 
If they keep lowering education standards and raising the price of
gasoline, there are going to be a lot of stupid people walking around.

Stacy Millions                                       [EMAIL PROTECTED]
Millions Consulting Limited


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to