Difference between revisions of "Debugging"
From coreboot
| Line 1: | Line 1: | ||
= GDB Interface = | = GDB Interface = | ||
| + | == GDB Wait == | ||
| + | Coreboot has an easy to use interface to the GNU debugger gdb. To enable it, select the CONFIG_GDB_STUB and the CONFIG_GDB_WAIT options in the Debugging menu of coreboot's configuration: | ||
| + | [*] GDB debugging support | ||
| + | [*] Wait for a GDB connection | ||
| + | Then Coreboot will stop and wait for a GDB connection. | ||
| − | + | == Exceptions with GDB == | |
| + | Else if you just enable CONFIG_GDB_STUB option in the Debugging menu of coreboot's configuration you will still get some benefit. | ||
[*] GDB debugging support | [*] GDB debugging support | ||
| − | + | For instance you will not get exceptions like this: | |
Unexpected Exception: 0 @ 10:0012724b - Halting | Unexpected Exception: 0 @ 10:0012724b - Halting | ||
Revision as of 12:10, 23 June 2012
GDB Interface
GDB Wait
Coreboot has an easy to use interface to the GNU debugger gdb. To enable it, select the CONFIG_GDB_STUB and the CONFIG_GDB_WAIT options in the Debugging menu of coreboot's configuration:
[*] GDB debugging support [*] Wait for a GDB connection
Then Coreboot will stop and wait for a GDB connection.
Exceptions with GDB
Else if you just enable CONFIG_GDB_STUB option in the Debugging menu of coreboot's configuration you will still get some benefit.
[*] GDB debugging support
For instance you will not get exceptions like this:
Unexpected Exception: 0 @ 10:0012724b - Halting Code: 0 eflags: 00010046 eax: 00000001 ebx: 00000061 ecx: 00000004 edx: 00000000 edi: 00000000 esi: 00000061 ebp: 00163abc esp: 00163a98
But instead you will be able to connect to the machine using gdb over a serial line in case of an exception:
(gdb) file coreboot/build/coreboot_ram.debug
Reading symbols from coreboot/build/coreboot_ram.debug...done.
(gdb) set remotebaud 115200
(gdb) target remote /dev/ttyUSB0
Remote debugging using /dev/ttyUSB0
0x0012824b in __udivdi3 (n=17082841390, d=0) at ...
...
(gdb) bt
#0 0x0012824b in __udivdi3 (n=17082841390, d=0)
at /usr/lib/gcc/gcc- 4.3.2/libgcc/../gcc/libgcc2.c:899
#1 0x0011efa2 in handle_port_61h ()
#2 0x0011fbc3 in my_inb ()
#3 0x001189f5 in x86emuOp_in_byte_AL_IMM ()
#4 0x001092f1 in X86EMU_exec ()
#5 0x0010a06f in biosemu ()
#6 0x0011fcfb in run_bios ()
#7 0x0010cbcb in pci_dev_init ()
#8 0x00103d9b in dev_initialize ()
#9 0x0010f8b5 in hardwaremain ()
#10 0x00100099 in _text ()