Debugging without GDB - stack print?

Christian Prochaska christian.prochaska at genode-labs.com
Sat Aug 24 22:39:14 CEST 2019


Hi Alexander,

the virtual memory address of your test application is 0x1000000, so the page fault IP address 0xa95b1 is not in the application
itself. You can get the memory addresses of shared libraries printed with

<config ld_verbose="yes"...>

For example, with 'run/log' the output would look like:

[init -> test-log]   0x40000000 .. 0x4fffffff: stack area
[init -> test-log]   0x30000 .. 0x197fff: ld.lib.so

IP addresses below 0x1000000 usually belong to ld.lib.so, which is loaded first, whereas additional shared libraries usually reside
above the application.

Now you can find the source code location of the page fault with

$ genode-x86-objdump -dSCl debug/ld-sel4.lib.so | less

With ld.lib.so and the application image, you can look up the location with the page fault address directly, but with other shared
libraries you would need to subtract the load address first.

I wonder if your test application really needs to be started with Noux though. If it doesn't need fork() or execve(), it would
probably be easier not to use Noux.

Christian



More information about the users mailing list