Hi all,
As part of my studies, I am required to undertake a year-long project to create, design, and develop a program of my choice. Naturally, I wanted to do something that involved working with Genode, and what better opportunity to tackle one of the ‘challenges’ of the project: a graphical on-target IPC tracing tool!
I’d really value some input from those who have experience of Genode’s tracing workflows, and would like to ask some questions that would really help me in my design stage later on. Specifically:
- What’s currently preventing you from using tracing more often or in more scenarios?
- What scenarios are you running into now where you can see such a tool being useful?
- What takes the most time in your current tracing workflow?
- What features would you like to see implemented that would bring the most benefit?
If anyone has experience building similar visualisation or tracing tools, feel free to tell me about what worked and what didn’t. Even if you are unfamiliar with Genode’s tracing infrastructure, that’s fine too; any questions or pointers are welcome.
1 Like
Hi,
I’ve been working with on-target tracing and off-target evaluation some years ago. The corresponding tracing infrastructure is still available today and could probably serve you as a basis.
Honestly, I’ve not been using IPC tracing ever since. There are multiple aspects that render it a bit inconvenient, in my opinion:
- The setup is rather complicated. First, in order to collect the trace and, second, to evaluate the traces on another system. An on-target GUI could probably be helpful.
- A lot of application context is lost (i.e. not easily deductible) at IPC-level. E.g. when looking at the interplay of two components that communicate via Report and ROM sessions, I’m not only interested in when the signalling happened but also in the content of the Report/ROM. I therefore often resort to instrumentation on application-level or to session-level logging (e.g. vfs_audit).
- For component-internal timing, the GENODE_LOG_TSC macros and function profiling are easier to use.
- For more complex scenarios, I think IPC tracing is best combined with instrumentation in order to add application-specific context into the trace such as an error condition that I want to correlate with the component interactions. Thus a killer feature would be the visual integration of custom trace events within the visualization of the component interactions. The custom trace events should act as anchors to help navigation in the potentially long and complex stream of component interactions.
3 Likes