JavaScript Debugger Just My Code Boundary

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

JavaScript developers face challenges in debugging their code due to errors in third-party libraries, which are often obfuscated and difficult to modify, leading to confusion when identifying the source of execution problems.

Innovation Solution

A debugger tool, referred to as 'Just My Code,' allows developers to treat third-party libraries as a black box, automatically skipping over uninteresting inputs and using a 'Step to Document Boundary' mechanism to focus on debugging their own code, thereby isolating errors within 'my code' and excluding library code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If developers use third-party libraries in JavaScript applications, then development efficiency is improved through pre-debugged and optimized code, but debugging complexity increases when errors occur in the developer's own code due to inability to distinguish library code from developer code

Engineering Contradiction:
Improvedevelopment efficiencyVSAvoiddebugging complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The debugger introduces a document boundary mechanism as an intermediary layer between the developer and the mixed code execution environment. This boundary automatically identifies and separates library code from developer code during debugging, allowing the developer to focus only on their own code without manually filtering through third-party library code. The boundary acts as a mediator that filters debug information based on code ownership.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The debugger segments the code execution context into distinct regions: developer code regions and library code regions. By applying document boundaries, the debugger creates clear segmentation between code owned by the developer and code from third-party libraries, enabling selective debugging of only the developer's code segments while treating library code as opaque blocks.

Inventive Principle:
Principle #1Segmentation

2Measurement precision

If developers manually filter through third-party library code during debugging, then they can identify errors in their own code, but debugging time increases significantly due to the need to step through obfuscated and unreadable library code

Engineering Contradiction:
Improveerror identification accuracyVSAvoiddebugging time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The debugger extracts and removes library code from the debugging view, presenting only developer code to the user. The document boundary mechanism automatically extracts third-party library code segments and excludes them from the debugging interface, allowing developers to see only their own code without manually stepping through obfuscated library code, thereby dramatically reducing debugging time while maintaining error identification accuracy.

Inventive Principle:
Principle #2Taking out (Extraction)

3Productivity

If developers use compressed and minified third-party libraries, then library performance and size are optimized, but code readability decreases making it impossible to debug library code

Engineering Contradiction:
Improvelibrary performanceVSAvoidcode readability
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The debugger applies different quality treatments to different code regions: developer code is presented with full readability and debugging capabilities, while library code is treated as an opaque black box with reduced visibility. The document boundary enables local quality differentiation where the same debugging system provides full code inspection for developer code but minimal inspection for library code, optimizing both readability and performance.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10664384B2Javascript debugging using just my code
Publication Date: 2020.05.26 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10664384B2 patent drawing
  • US10664384B2 patent drawing
  • US10664384B2 patent drawing

AI summary

The present invention extends to methods, systems, and computer program products for stepping through JavaScript code in a debugger without landing on errors in library or open source code. A debugger receives user inputs designating one or more segments of the JavaScript code as library code. The debugger then performs debugging operations on the JavaScript code. The debugging operations including a stepping operation for stepping through the JavaScript code to identify errors only in user-generated segments of the JavaScript code, wherein the user-generated segments correspond to code that was not designated as library code.