Abstract

Integrated development environments (IDEs) provide many useful tools such as a code editor, a compiler, and a debugger for creating software. These tools are highly sophisticated, and their development requires a significant effort. Traditionally, an IDE supports different programming languages via plugins that are not usually reusable in other IDEs. Given the high complexity and constant evolution of popular programming languages, such as C++ and even Java, the effort to update those plugins has become unbearable. Thus, recent work aims to modularize IDEs and reuse the existing parser implementation directly in compilers. However, when IDE debugging tools are insufficient at detecting performance defects in large and multithreaded systems, developers must use tracing and trace visualization tools in their software development process. Those tools are often standalone applications and do not interoperate with the new modular IDEs, thus losing the power and the benefits of many features provided by the IDE. The structure and use cases of tracing tools, with the potentially massive execution traces, significantly differ from the other tools in IDEs. Thus, it is a considerable challenge, one which has not been addressed previously, to integrate them into the new modular IDEs. In this paper, we propose an efficient modular client–server architecture for trace analysis and visualization that solves those problems. The proposed architecture is well suited for performance analysis on Internet of Things (IoT) devices, where resource limitations often prohibit data collection, processing, and visualization all on the same device. The experimental evaluation demonstrated that our proposed flexible and reusable solution is scalable and has a small acceptable performance overhead compared to the standalone approach.

Highlights

  • Creating software requires a set of development tools, such as a code editor, a compiler, a debugger, and a profiler, which are often provided by an integrated development environment (IDE)

  • While compressed JavaScript Object Notation (JSON) and Protobuf were close when it comes to sending the smallest amount of data over the network, Protobuf had the lowest execution time overhead

  • We presented a client–server architecture for large trace analysis and visualization, which can integrate well with an IDE

Read more

Summary

Introduction

Creating software requires a set of development tools, such as a code editor, a compiler, a debugger, and a profiler, which are often provided by an integrated development environment (IDE). Some popular programming languages such as C++ or Java evolve rapidly and have a very complex syntax. Developing a high-quality compiler or debugger requires significant effort. Modern IDEs support multiple programming languages via plugins, but those plugins are tightly coupled to the IDE and hardly reusable in other IDEs [1]. This means that if m IDEs support n different languages, m × n plugins must be implemented. In recent times, when there are new language versions, updating

Results
Discussion
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call