Are you an engineering student with focus on programming? Take a look at our master's thesis proposals!
IAR Embedded Workbench is a C/C++ Integrated Development Environment (IDE). As such, one of the primary tasks it performs is to compile C/C++ source code into executable code. To compile a project correctly, there are a number of different configuration options the user might need to set (for example, optimization levels, language compliance level, CPU variant to generate code for, etc). These abstract options are then translated into concrete options (typically command line switches to a compiler or linker executable). The set of options and the associated logic is sometimes referred to as the project model.
The project model is used not only by the IAR Embedded Workbench IDE application. For example, IAR Systems supports Eclipse as an alternate IDE for the company’s compilers and debuggers. This means that the project model needs to be accessible from Eclipse as well.
For a compiler developer, it sometimes happens that a modification of the code, the addition of new functionality, or a bug fix, has unintended side effects that result in the compiler generating incorrect code. This will show up during testing, but for complex test programs it is often a tedious task of tracking down the problem. The “parallel” debugger is meant as a tool to simplify that process.
The task is to develop a parallel debugger that should start two debug sessions in parallel, one with a binary compiled with an unchanged compiler and one with a binary compiled with the changed compiler. The same commands should be issued to both debug sessions and the debugger should stop when the state differs between the two debug sessions.
IAR Embedded Workbench is a C/C++ Integrated Development Environment (IDE). I compiles and links C/C++ source code into executable code and includes a debugger to help finding problems in the resulting application. The compiler generates debug information that is used for supporting source level debugging of the application. When an application is built for debugging, the information should be both correct and complete. However, when different levels of optimization are applied, completeness (and sometimes correctness) can degrade in various ways
The task is to develop a way to automatically verify correctness and completeness of a significant part of the debug information.