Re: how to get a process backtrace from kernel gdb?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 22, 2006 at 07:11:22PM +0800, Fuxin Zhang wrote:

> Are there any existing method/code to get a reliable back trace dump for
> oops? Kgdb is not usable here because I have no serial port. Do I need
> to copy gdb code to analysis the stack?

By all practical means the method used by get_wchan() in my previous
posting is safe.  A method that is also theoretically correct is a little
harder but could be constructed based on the gcc generated DWARF 2
debugging info.  IA64 does this for example.

> If I am not wrong, dump_stack() just print out any stack address falled
> in the text section, and that will make the result hard to understand.
> For example, I often find some interrupt functions mixed with normal
> function names and repeated functions, e.g.

You're absolutely right, dump_stack really needs to be fixed to be more
useful.  As it is it's generating alot of confusing output.  There are
two possible approaches here:

 a) Analyze the code with a simple frame unwinder along the lines of the
    get_wchan implementation.  Simple but possibly fragile as compilers
    continue to improve.
 b) Bite the bullet and use the DWARD 2 frame unwind info and code.  More
    complicated but will be a solid and correct solution albeit larger so
    not acceptable for small embedded devices.

I fear we may have to do both, 2) as the prefered solution and 1) as the
fallback solution.

  Ralf


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux