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