GDB debugging

Christian Prochaska christian.prochaska at ...1...
Fri Oct 21 15:14:01 CEST 2011


Hi Daniel,

you're right about the quota of the signal session. It gets upgraded
dynamically and the "Quota exceeded!" warning can be ignored in this case.

I'm not sure about the cause of the breakpoint problem. Which version of
GDB are you using? If it's not the current version 7.3.1, my first
suggestion would be to try this version, which is also the version the
GDB monitor implementation is based on. You can find the GDB 7.3.1
source archive in the 'ports/download' directory and build a GDB
specifically for Genode by using the following 'configure' line:

configure --prefix=/usr/local/genode-gcc --program-prefix=genode-x86-

When starting GDB from a run script, the '[gdb]' function looks for
CROSS_DEV_PREFIX-gdb first, so it already prefers the Genode-GDB to the
host GDB.

There's currently no programmatic API to trigger a breakpoint, but it
should work with asm("int $4").

Regards,
Christian

On 10/20/2011 05:39 PM, Daniel Waddington wrote:
> Hi Norman,
> This worked, but I am still not out of the woods.  First, there seems
> to be a signal quota issue (although I think this may be OK as more
> quota is requested dynamically?).  Second I have trouble setting break
> points.  When I set a break point and continue in gdb, it reports
> warning: Error removing breakpoint X.
>
> Also, is there a programmatic API to trigger a break into GDB
> (asm("int3") enters JDB)?
>
> Regards,
> Daniel
>
> [init -> gdb_monitor] Remote debugging using /dev/terminal
> [init -> gdb_monitor] Memory model: no memory at address 1009164
> [init -> gdb_monitor] Memory model: no memory at address 1009165
> [init -> gdb_monitor] Memory model: no memory at address 1009166
> ... REPEAT MANY TIMES
> [init -> gdb_monitor] Memory model: no memory at address 1000160
> [init -> gdb_monitor] Memory model: no memory at address 1000161
> [init -> gdb_monitor] Memory model: no memory at address 1000162
> [init -> gdb_monitor] Memory model: no memory at address 1000163
> [init -> gdb_monitor] Memory model: no memory at address 1000164
> [init -> gdb_monitor] Memory model: no memory at address 1000161
> [init -> gdb_monitor] (attempted to write 0)
> [init -> gdb_monitor] linux_resume_one_lwp(step = 0, signal = 0)
> [init -> gdb_monitor] genode_store_registers() - not yet implemented
> [init -> gdb_monitor] genode_wait_for_signal_or_gdb_interrupt
> [init -> gdb_monitor -> thread-migration] Starting ldso ...
> [init -> gdb_monitor] received signal for lwpid 1
> [init -> gdb_monitor] linux_resume_one_lwp(step = 1, signal = 0)
> [init -> gdb_monitor] genode_store_registers() - not yet implemented
> [init -> gdb_monitor] genode_wait_for_signal_or_gdb_interrupt
> [init -> gdb_monitor] received signal for lwpid 1
> [init -> gdb_monitor] linux_resume_one_lwp(step = 0, signal = 0)
> [init -> gdb_monitor] genode_store_registers() - not yet implemented
> [init -> gdb_monitor] genode_wait_for_signal_or_gdb_interrupt
> [init -> gdb_monitor -> thread-migration] Starting application ...
> environ: 85004
> [init -> gdb_monitor -> thread-migration] ==THREAD MIGRATION
> EXAMPLE===============
> [init -> gdb_monitor -> thread-migration] Creating thread [0]
> [init -> gdb_monitor] add_lwp(1, 2, 0)
> [init -> gdb_monitor -> thread-migration] Creating thread [1]
> [init -> gdb_monitor] add_lwp(1, 3, 0)
> [init -> gdb_monitor -> thread-migration] Creating thread [2]
> [init -> gdb_monitor] received signal for lwpid 2
> Quota exceeded! amount=4096, size=4096, consumed=4096
> ??
>
> ---- GDB SIDE ---
> (gdb) target remote localhost:5555
> Remote debugging using localhost:5555
> Reading symbols from ld.lib.so...done.
> Loaded symbols for ld.lib.so
> 0x00055c50 in _start_ldso () from ld.lib.so
> (gdb)
> (gdb) break OmniOS::sleep
> Breakpoint 1 at 0x1000160: file
> /home/dwaddington/git/omnios/genode/base/../omnios/include/omnios/sleep.h,
> line 45.
> (gdb) c
> Continuing.
> warning: Error removing breakpoint 1
>
> -- 





More information about the users mailing list