On Tue Mar 13, 2018 at 11:58:57 +0800, Zihan Yang wrote:
> I'm trying to debug L4Linux using jdb in Fiasco. I have added a
> breakpoint in a function(e.g, syscall_exit), and it did hit into jdb
> when I run. However, when I type 'bt' in jdb, it only prints the
> values in the stack, or worse, it sometimes couldn't print the stack.
> I have tried enabling L4_DEBUG_REGISTER_NAMES and CONFIG_FRAME_POINTER
> in L4Linux, and uncheck 'config without frame pointer' and 'generate
> inline code' options in Fiasco, but still it doesn't work.
> QEMU could be an option, but qemu debugs the whole system while I just
> want to focus on the L4Linux itself because I just want to figure out
> the call path of ret_from_fork and how does L4Linux stop the user
> dispatch loop, etc.
> Is there any way to show the the call path in jdb to assist the debugging
There's not really such a feature in jdb to assist with that.
I think reading code is the better approach here.
> By way, is there any doc describing the call path from fiasco to
> L4Linux, I know it is implemented with sysretq or iretq, but where is
> the entrypoint in L4Linux? For example, when I type 'ls /bin' in
> shell, it would finally go into L4Linux's function 'syscall_exit()',
> but how can I find the call path between them? If I can figure it out,
> maybe I just don't need to debug anymore.
All this entry to Linux and exit from it (to the user process) is
happening in arch/l4/kernel/dispatch.c. There's the entry point
(l4x_vcpu_entry) and that's the path to follow. In there it will branch
to syscall handling, page fault handling, irq handling, or exception
handling, depending on the type of entry.
l4-hackers mailing list