Distributed systems consist of multiple processes. Many analysis tools, like debuggers, support only one process, though. It is therefore interesting to transform multiple processes into a single process, and execute the result in a debugger. This transformation is called Centralization.
Centralization of Java bytecode can be automated, but current tools are based on outdated technology, and no longer work on current Java bytecode. The goal of this internship is to analyze current papers and tools, and build a new centralization tool based on the ASM bytecode manipulation toolkit.
Manipulation of Java bytecode requires interest in, and knowledge of, bytecode or similar machine code, and how program executables are structured into executable code and data. The resulting tool could transform any standard Java program and have a potentially widespread usage, extending the scope of many existing tools such as debuggers.