How to show call path in backtrace with jdb?
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Wed Mar 14 01:28:28 CET 2018
Hi,
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 work?
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.
Adam
More information about the l4-hackers
mailing list