Documentation: How to use GDB to decode OOPSes
Adds instructions how to use GDB to figure out the exact location of an OOPS to Documentation/BUG-HUNTING. Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
0a920b5b66
commit
926b28984d
1 changed files with 24 additions and 0 deletions
|
@ -191,6 +191,30 @@ e.g. crash dump output as shown by Dave Miller.
|
||||||
> mov 0x8(%ebp), %ebx ! %ebx = skb->sk
|
> mov 0x8(%ebp), %ebx ! %ebx = skb->sk
|
||||||
> mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt
|
> mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt
|
||||||
|
|
||||||
|
In addition, you can use GDB to figure out the exact file and line
|
||||||
|
number of the OOPS from the vmlinux file. If you have
|
||||||
|
CONFIG_DEBUG_INFO enabled, you can simply copy the EIP value from the
|
||||||
|
OOPS:
|
||||||
|
|
||||||
|
EIP: 0060:[<c021e50e>] Not tainted VLI
|
||||||
|
|
||||||
|
And use GDB to translate that to human-readable form:
|
||||||
|
|
||||||
|
gdb vmlinux
|
||||||
|
(gdb) l *0xc021e50e
|
||||||
|
|
||||||
|
If you don't have CONFIG_DEBUG_INFO enabled, you use the function
|
||||||
|
offset from the OOPS:
|
||||||
|
|
||||||
|
EIP is at vt_ioctl+0xda8/0x1482
|
||||||
|
|
||||||
|
And recompile the kernel with CONFIG_DEBUG_INFO enabled:
|
||||||
|
|
||||||
|
make vmlinux
|
||||||
|
gdb vmlinux
|
||||||
|
(gdb) p vt_ioctl
|
||||||
|
(gdb) l *(0x<address of vt_ioctl> + 0xda8)
|
||||||
|
|
||||||
Another very useful option of the Kernel Hacking section in menuconfig is
|
Another very useful option of the Kernel Hacking section in menuconfig is
|
||||||
Debug memory allocations. This will help you see whether data has been
|
Debug memory allocations. This will help you see whether data has been
|
||||||
initialised and not set before use etc. To see the values that get assigned
|
initialised and not set before use etc. To see the values that get assigned
|
||||||
|
|
Loading…
Add table
Reference in a new issue