Q&A: Visualizing Code Traces With Eclipse Trace Compass
Matthew Khouzam answers our questions about what Eclipse Trace Compass does, the different ways developers can use the technology, and how it’s evolving with assistance from researchers and academics.
Q. What capabilities does Eclipse Trace Compass give developers?
A. Eclipse Trace Compass lets you see a visual representation of your code trace. Trace Compass doesn’t create code traces. It reads code traces created using other tools and displays them in a graphical way that’s far more useful and user-friendly than huge blocks of text.
A code trace can be terabytes in size and you don’t want to have to go through all of that information with a fine-tooth comb to find the root cause of issues. When you can see an illustration of what’s happening in the code, you can pinpoint the root cause of an issue in a much faster and easier way. Trace Compass gives you that visibility.
Here’s an example from the Trace Compass user interface that shows a call stack plotted over time in a flame chart. Because each function is shown in a different color, the recursive algorithm is easily visible.
Every color represents a function's position in a stack, so you can see the function "trickle up" and the stack expand in a way like recursive algorithms.
Q. What other ways can developers use Trace Compass in their day-to-day work?
A. There are many different ways to use Trace Compass, but it’s particularly good at:
- Helping developers explore code that’s new to them. For example, say you’ve just joined a project that has a lot of code associated with it. You can run the code with tracing enabled, then use Trace Compass to read the trace and see which parts of the code are affected by the work you’re doing. In this type of application, Trace Compass becomes a very effective learning tool that helps you ramp up faster.
- Latency analysis. The example below shows how Trace Compass displays a poorly dimensioned thread pool that’s causing a slowdown.
- Performance analysis in situations where it’s important to see the sequence of events that lead to the root cause of an issue. Here’s an example of a full performance breakdown of program execution. It shows the:
- Call-stack versus time in a flame chart
- Called function aggregation versus duration in a flame graph
- Detailed events list
- Descriptive statistics for each function
As far as I know, Trace Compass is the only software that can simultaneously provide flame graphs and flame charts in an interactive way.
We’ve even used Trace Compass to improve its own performance. When we viewed the trace, we could see that Trace Compass was executing too many draw operations on each refresh of the render queue for Gantt charts. The issue couldn’t be seen with a sampling profiler, and when we tried instrumenting profilers, it slowed the Trace Compass user interface code so much that it induced false positives. Tracing made the answer obvious. After fixing the issue, Trace Compass is ready to scale to 4K monitors and beyond!
Overall, Trace Compass is very good at helping to find Heisenbugs, those really frustrating intermittent software bugs that seem to disappear or change when you start looking for them.
Q. Is the Trace Compass technology new, or new to the Eclipse Foundation?
A. Trace Compass is well established and proven technology that’s been hosted as its own project at the Eclipse Foundation since 2015. We’re currently at version 7.2. Prior to that, the technology was part of the Eclipse Linux Tools project. Once we started supporting Windows, it made sense to move the software out of the Linux Tools project so it didn’t appear that the capabilities were limited to Linux platforms.
Today, Trace Compass supports Linux, Windows, and Mac platforms. And it’s integrated into many tracing and code analysis tools.
Q. What role do researchers and academics play in evolving the Trace Compass software?
A. They play a huge role. We collaborate in a number of research projects, and several masters and Ph.D. theses are based on work in Trace Compass that was contributed back to the project. Trace Compass even includes features that are specifically designed for researchers, such as the ability to export images for inclusion in academic papers.
One academic partner in particular has worked with us for a long time. The DORSAL lab at Polytechnique Montréal, an engineering school affiliated with the Université de Montréal in Canada, specializes in software performance optimization. Students from the DORSAL lab have made very valuable contributions to Trace Compass, including the online critical path, CPU usage chart, and support for the Android trace format. They’ve also helped with distributing and scaling Trace Compass and adapting it into a more microservices-friendly architecture.
The Eclipse Trace Compass Incubator project is a permanent incubator that was created so students have a place to contribute the code for new features they develop. Research associates and our industrial partners then look at how the students’ contributions can be added to the main Trace Compass code stream.
Q. What’s next for Trace Compass?
A. We’re developing a new web-based user interface called TraceCompass.cloud. The web frontend will be hosted in the Eclipse CDT.cloud project, which uses Eclipse Theia as its frontend. Because we’re working in a new area, we have a great opportunity to build a better user experience from the ground up. We’re currently at the alpha stage of development, so it’s not yet ready for prime time.
Q. How can people get involved in Trace Compass?
A. We’re looking for more community support in a number of areas. One good example is enhancing Trace Compass support for the Best Trace Format (BTF). BTF is widely used in the automotive industry so this is a great opportunity for developers interested in tracing in automotive software development to get started with the project and make a very valuable contribution. You can find the links to get involved in the Community section of our website.
We’d also like more input to ensure our web development work is going in the right direction. Here’s how you can help:
- Try the most recent Theia Trace Viewer demo. It takes about 5-10 minutes.
- Let us know your thoughts in this user survey.
If you find an issue in Trace Compass, please use the Report Bug button to let us know.
About the Author
More from this Edition
The EclipseSource team explains how Eclipse CDT.cloud and CDT.cloud Blueprint help developers using C/C++ for web and cloud development.
Miro Spönemann introduces Eclipse Sprotty, describes recent enhancements in the software, and outlines what to expect in upcoming releases.