Great leaps in human knowledge are linked to advancements in tools. For software engineers the debugger is a cornerstone tool to create reliable products. We engage in a running battle fighting both the problem and the tool because each debug situation is unique.
This is a major challenge for debugger designers, i.e. how do we build a debugger with a balance of flexibility and simplicity with enough usefulness? With the rate of hardware change increasing - along with improvements in Operating Systems and Programming Languages, debugging and optimizing software becomes paramount i.e. improving performance, code-size and energy-efficiency.
As we transition towards more hardware parallelism the pressure grows to keep the time-to-market at least constant which in turn means new debugging strategies. From my perspective it is always good to draw from the current technology landscape and view how we can use these technologies in the future. For instance, Cover Flow UI could be used to improve multi-processor viewing, Microsoft Kinect to navigate the debug UI, and further more expert systems running in the cloud to help analyze problems and bottlenecks in the code. These ideas may be farfetched but we need to start looking at alternative ways of making debug and optimization more efficient in the future - if we want to keep the time-to-market constant.
Today we see mobile and tethered systems with 1, 2 and soon to be 4 application processors in the compute-node. Tomorrow this number could be exponentially larger either in an off-chip distributed configuration and/or on-chip tightly integrated configuration. Taking just performance as one of the metrics for the future - performance will be a function of how well the data can be localized and how an algorithm can be broken down into parallel tasks. The software that runs on these types of systems will have to be debugged and optimized using radically new techniques due to the inherent complexity.
Tomorrows debuggers will be different because tomorrows hardware topologies will be different. The question is what other farfetched technologies are required to make the debug process easier?
Hi nemo20000, you may be interested in having a look this Application Rewind in DS-5. Let me know what you think...