Macro-Enclosed Source Code Breakpoint Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing debugging technologies face challenges in effectively setting breakpoints for source code segments enclosed by macros, particularly when porting computer programs across different platforms, as macro enclosed information is not adequately passed to linking stages or debugging information, making it difficult to stop all enclosed code segments effectively.

Innovation Solution

A method involving a compiler that preprocesses source code to identify macro conditions, generate object code, and create macro information, which includes breakpoint conditions, allowing a debugger to set single- or multi-level breakpoints at code lines enclosed by macros, facilitating efficient debugging across platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If traditional debugging technologies are used for macro enclosed source code, then the debugging process becomes complex and time-consuming, but the breakpoint setting capability remains insufficient

Engineering Contradiction:
Improvebreakpoint setting capabilityVSAvoiddebugging time
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The compiler performs preliminary processing during compilation to identify and record macro conditions and enclosed code segments, storing this information in the object code. This preliminary action enables the debugger to directly utilize pre-computed macro information without performing complex analysis during debugging, thus improving breakpoint setting capability while reducing debugging time

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The invention introduces an intermediary mechanism where macro information (including macro conditions and enclosed code segments) is embedded in the object code as a bridge between the source code and debugger. This intermediary allows the debugger to efficiently access and process macro-related debugging information without directly analyzing the complex source code structure, resolving the contradiction between ease of operation and time consumption

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If macro information is not passed to linking stages, then the compilation process remains simple, but the debugging information becomes incomplete

Engineering Contradiction:
Improvedebugging information completenessVSAvoidcompilation process complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The invention merges macro information processing into the existing compilation and linking workflow by embedding macro conditions and enclosed code segment data directly into the object code during compilation. This merging approach ensures debugging information completeness without requiring separate macro information passing stages, thus maintaining compilation process simplicity while improving debugging information reliability

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The object code serves multiple functions: it contains both the executable machine code and embedded macro information (macro conditions, enclosed code segments). This multi-functionality eliminates the need for separate macro information structures or passing mechanisms, achieving complete debugging information without increasing compilation process complexity

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS11983090B2Setting breakpoints for source code segments enclosed by macros
Publication Date: 2024.05.14 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11983090B2 patent drawing
  • US11983090B2 patent drawing
  • US11983090B2 patent drawing

AI summary

A method of analyzing source code includes receiving, by a processor, an updated version of a computer program, the updated version including a source code. The method also includes preprocessing, by a compiler, the source code for a target computing platform. Preprocessing the source code by the compiler includes identifying a macro condition associated with one or more computer instructions enclosed by a macro, determining object code corresponding to the one or more computer instructions based on a current value of the macro condition, and generating object code and macro information for output to a debugger, the macro information including one or more breakpoint conditions in the macro.