Methodology and tools for debugging multi-constrained operating systems and applications for multi-processor architectures
Conventional debugging methodologies and tools that consist in breakpoint insertion, single-step execution and convenient CPU state representation for programmer to observe and trace bugs have been proven to work relatively well for non-critical applications, executed on mono-processor platforms. Most of the industrial and open-source programming environments offer solutions that can be used to more or less efficiently speed-up debugging process for typical applications. However the existing solutions are not at all adapted for multi-processor architectures. Manually monitoring the state of even few cores becomes a burden, not to mention many-core systems, with hundreds or more CPUs that could be integrated in a single integrated circuit. For multi-constrained operating systems (such as real-time OSes, but not only limited to these) the situation becomes even more complicated because of the breakpoint intrusiveness (and hence alternation of the assumptions linked to task timing properties) and the difficulty to deal with actual representation of the time and event synchronisations. PhD candidate that chose to work on this topic will first establish software/hardware co-debugging methodology based on input requirements provided by multi-processor architecture/multi-constrained operating systems developments. He will then develop and implement scalable (in terms of number of cores) debugging environment that can be used with standard programming tool chains. Validation of the proposed approach and developed tools will be performed using several real-life application sourced from the industry.