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
|