Binary Debugging Rerouting Between Optimized and Non-Optimized Code
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Debugging optimized code is inefficient due to missing context information, erratic debugger stepping, and the need for frequent recompilation, while non-optimized code is too slow for practical use, leading to suboptimal debugging experiences.
Innovation Solution
A system that dynamically redirects between optimized and non-optimized binaries during debugging, using breakpoints and metadata to seamlessly switch between the two, allowing simultaneous execution and navigation, reducing the need for recompilation and user intervention.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of information
If non-optimized binary is used for debugging, then context information and debuggability are improved, but execution speed deteriorates
Solution Approach 1:
The system segments the debugging process into two distinct binary modes: optimized binary for high-speed execution and non-optimized binary for detailed debugging. The debugger can selectively switch between these segments based on debugging needs, allowing context information to be preserved when required while maintaining overall execution speed through the optimized path.
Solution Approach 2:
The system dynamically switches between optimized and non-optimized binaries during the debugging session. The debugger can transition from the optimized binary (fast execution) to the non-optimized binary (full context available) when debugging operations are needed, and switch back when resuming normal execution, making the system adaptable to changing debugging requirements.
2Speed
If optimized binary is used for debugging, then execution speed is improved, but debuggability and local variable inspection deteriorate
Solution Approach 1:
The system introduces an intermediary mechanism that bridges the optimized and non-optimized binaries. When debugging operations such as local variable inspection or breakpoints are required, the debugger acts as an intermediary to transparently switch to the non-optimized binary, perform the debugging operation, and then return to the optimized binary, shielding the user from the complexity of binary switching while providing full debuggability when needed.
3Ease of operation
If code is recompiled to disable optimizations, then debuggability is improved, but time consumption and productivity deteriorate
Solution Approach 1:
The system performs preliminary action by pre-compiling both optimized and non-optimized binaries before the debugging session begins. This eliminates the need for recompilation during debugging, as both versions are already available. The debugger can immediately switch between pre-compiled binaries based on debugging requirements, saving significant time that would otherwise be spent on repeated compilation cycles.
Data Source
AI summary
Systems, methods, and devices are provided for facilitating seamless debugging while dynamically rerouting between an optimized binary and a non-optimized binary. Embodiments receive an optimized binary and a non-optimized binary based on a binary and trigger redirection between the optimized binary and the non-optimized binary. The redirection is triggered based on one of: identifying a breakpoint within the optimized binary, encountering an updated Position-independent Portion within the non-optimized binary; or redirecting between the optimized binary and the non-optimized binary based on the trigger.


