diff options
Diffstat (limited to 'Documentation/BUG-HUNTING')
-rw-r--r-- | Documentation/BUG-HUNTING | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING index 65b97e1dbf70..35f5bd243336 100644 --- a/Documentation/BUG-HUNTING +++ b/Documentation/BUG-HUNTING | |||
@@ -191,6 +191,30 @@ e.g. crash dump output as shown by Dave Miller. | |||
191 | > mov 0x8(%ebp), %ebx ! %ebx = skb->sk | 191 | > mov 0x8(%ebp), %ebx ! %ebx = skb->sk |
192 | > mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt | 192 | > mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt |
193 | 193 | ||
194 | In addition, you can use GDB to figure out the exact file and line | ||
195 | number of the OOPS from the vmlinux file. If you have | ||
196 | CONFIG_DEBUG_INFO enabled, you can simply copy the EIP value from the | ||
197 | OOPS: | ||
198 | |||
199 | EIP: 0060:[<c021e50e>] Not tainted VLI | ||
200 | |||
201 | And use GDB to translate that to human-readable form: | ||
202 | |||
203 | gdb vmlinux | ||
204 | (gdb) l *0xc021e50e | ||
205 | |||
206 | If you don't have CONFIG_DEBUG_INFO enabled, you use the function | ||
207 | offset from the OOPS: | ||
208 | |||
209 | EIP is at vt_ioctl+0xda8/0x1482 | ||
210 | |||
211 | And recompile the kernel with CONFIG_DEBUG_INFO enabled: | ||
212 | |||
213 | make vmlinux | ||
214 | gdb vmlinux | ||
215 | (gdb) p vt_ioctl | ||
216 | (gdb) l *(0x<address of vt_ioctl> + 0xda8) | ||
217 | |||
194 | Another very useful option of the Kernel Hacking section in menuconfig is | 218 | Another very useful option of the Kernel Hacking section in menuconfig is |
195 | Debug memory allocations. This will help you see whether data has been | 219 | Debug memory allocations. This will help you see whether data has been |
196 | initialised and not set before use etc. To see the values that get assigned | 220 | initialised and not set before use etc. To see the values that get assigned |