CDT.cloud hosts components and best practices for building customizable web-based C/C++ tools. As a demonstration of how these components can be integrated with each other, CDT.Cloud provides a template tool named CDT.cloud Blueprint. For more information, please also visit the project website.
Eclipse Trace Compass Cloud
Eclipse Trace Compass Cloud provides tools and components that facilitate the adoption of cloud-based trace analysis and visualization use cases.
The scope of the project includes the following:
Trace Server Protocol (TSP) specification
A client-side library implementation of the TSP in Typescript
A client-side library implementation of the TSP in Python
Generic client front-end implementation in Typescript
Graphical libraries for specialized visualizations (e.g. Gantt-chart type view)
Even if the Trace Server Protocol can be used for other types of visualization use cases, for example for showing profiling data or memory usage, this is not in scope initially.
The primary purpose of this project is to provide a framework for visualizing traces on a distributed platform. A limitation of monolithic implementations like Trace Compass in its current form is that the front end and the back end need to be on the same machine, as well as the trace. This makes scalability limited to a single node. Another limitation is that Trace Compass’s front-end is coupled to SWT. This works well, in many cases, but when it comes to drawing complex images, it is still using the CPU for rendering assistance. A GPU accelerated solution such as something using WebGL technologies is desirable to maintain graphical scalability on modern 4k++ displays.
This can be used as a way to effectively perform deep dives in larger traces, both in duration and breadth while leveraging modern and common UI widgets. The front end shall be hosted in the project, as well as the protocol but the back-end shall remain in the Eclipse Trace Compass project.
The main functionalities of the viewer are configuration, showing trees, continuous data (plots) and discrete data (graphs). The viewers are to be navigable and time synced allowing nanosecond resolution queries.
This shall be used in a Visual Studio Code extension that will be a front end to Eclipse Trace Compass. The protocol defined shall be openly available too, so others may add custom back ends and front ends, much like the Language Server Protocol (LSP) and Debug adapter protocol (DAP), the Trace Server Protocol (TSP) aims to have reporting primitives sent over a network to other clients.
The goal of the trace server protocol is identical to that of the LSP and DAP. It would allow many back ends and many front ends to connect together seamlessly. It is key in remaining vendor neutral and truly open that it be hosted in a foundation such as eclipse.
Simpler example implementations shall also be made available in the server, such as a python command line viewer that could be used for CI/CD troubleshooting.
CDT GDB DAP Adapter
The Eclipse CDT GDB Adapter is an implementation of the Debug Adapter Protocol (DAP), allowing the connection of web-based tools to any device supporting GDB. The library can be included into VS Code, Theia or any client that supports DAP. For example, Renesas, ARM and Blackberry/QNX all have VS Code or Theia extensions that can allow the IDE to connect to their respective hardware and ecosystem. Whether your editor is a traditional IDE, or you are using the new generation of editors in the cloud, the adapter is a key piece that allows communication between that editor and GDB.
The Adapter is a library, and therefore enabling technologies, such as extensions, allow the library to be used in those editor/IDEs.This part of the project will therefore include such extensions and integrations as either examples or published products. Therefore, in addition to the third-party adapters that are built on top of CDT GDB Adapter, the adapter is also delivered as an extension for Theia via the Open VSX Registry and is expected to be delivered as an extension for VS Code in the near future.
Eclipse CDT.cloud Blueprint
CDT.cloud Blueprint is a template tool for building custom, web-based C/C++ tools. It is made of existing open source components and provides a typical C/C++ IDE based on the Eclipse Theia platform. This includes C/C++ language features, a language server (clangd), debugging support, memory debugging and a tracing view. It is meant to serve as a starting point for the implementation of domain-specific custom tools. For a simple showcase, CDT.cloud Blueprint can be easily downloaded and installed on all major operating system platforms.
CDT.cloud Blueprint is not a production-ready product. Therefore, it is also not meant to be a replacement for Eclipse CDT or any other IDE (yet).
As part of the CDT.cloud project, the Blueprint will serve as an integration tool that integrates other parts of CDT.cloud together with parts from outside the project. It therefore also ensures compatibility of the involved projects and can serve as a kind of simultaneous release.