Re: [PATCH] Documentation: Update to BUG-HUNTING

From: Randy.Dunlap
Date: Wed Feb 22 2006 - 23:51:07 EST


On Thu, 23 Feb 2006 08:47:39 +1300 Ian McDonald wrote:

> Hi there,

Lo,

> +Finding bugs is not always easy. Have a go though. If you can't find it don't
> +give up. Report as much as you have found to the relevant maintainer. See
> +MAINTAINERS for who that is for the subsystem you have worked on.
or that you are having problems with.


> +To debug a kernel, use objdump and look for the hex offset from the crash
> +output to find the valid line of code/assembler. Without debug symbols, you
> +will see the assembler code for the routine shown, but if your kernel has
> +debug symbols the C code will also be available. (Debug symbols can be enabled
> +in the kernel hacking menu of the menu configuration.) For example:
> +
> + objdump -r -S -l --disassemble net/dccp/ipv4.o
> +
> +NB.: you need to be at the top level of the kernel tree for this to pick up
> +your C files.
> +
> +If you don't have access to the code you can also debug on some crash dumps
> +e.g. crash dump output as shown by Dave Miller.
> +
> +> EIP is at ip_queue_xmit+0x14/0x4c0
> +> ...
> +> Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00
> +> 00 00 55 57 56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08
> +> <8b> 83 3c 01 00 00 89 44 24 14 8b 45 28 85 c0 89 44 24 18 0f 85
> +>
> +> Put the bytes into a "foo.s" file like this:
> +>
> +> .text
> +> .globl foo
> +> foo:
> +> .byte .... /* bytes from Code: part of OOPS dump */
> +>
> +> Compile it with "gcc -c -o foo.o foo.s" then look at the output of
> +> "objdump --disassemble foo.o".

Maybe add this:

You can also take the "Code:" <object code> and feed it as bytes into a
.S (assembly) source file, assemble that, then objdump the .o file.
This is especially useful if the "Code:" line is one of the best clues
that you have. Andi Kleen has a script for doing this. It's called
'decodecode' and it's available from
ftp://ftp.firstfloor.org/pub/ak/shell/decodecode


---
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/