Just My Code Debugger Segmentation for JavaScript Noise Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

As JAVASCRIPT applications become increasingly complex, developers face difficulties in debugging their own code due to noise from libraries and plugins, which are often compressed and obfuscated, making it hard to identify and isolate errors originating from third-party or unrelated code.

Innovation Solution

The 'Just My Code' debugging feature modifies debugger behaviors and visualizations to distinguish between user-created code ('My Code'), library code, and unrelated code, allowing developers to focus on their own code by skipping over library and unrelated code, highlighting relevant lines, and filtering out noise in the call stack and exception handling.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If developers use third-party libraries and plugins to simplify development, then development efficiency is improved, but debugging complexity increases due to noise from external code

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

Solution Approach 1:

The patent segments the codebase into distinct categories: user code, library code, and plugin code. This segmentation is achieved through metadata tags and attributes that标识 each code segment's origin and ownership. The debugger then applies different debugging behaviors to each segment, allowing developers to focus on their own code while automatically filtering out noise from external libraries and plugins.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary layer between the developer and the debugging process. This intermediary is the Just My Code debugging mechanism that intercepts debugger events, determines whether they originate from user code or external code, and selectively applies debugging actions. This intermediary filters out irrelevant debugging noise from libraries and plugins before it reaches the developer.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If libraries are compressed and minified to optimize performance, then execution speed is improved, but code readability and debuggability deteriorate

Engineering Contradiction:
Improveexecution speedVSAvoidcode readability
Core Design Contradiction:
SpeedVSEase of operation

Solution Approach 1:

The patent creates a mapping between the minified library code and its original human-readable source code. When debugging, the system uses this mapping to display the original source code to developers while the actual execution occurs on the minified code. This allows developers to read and understand the code in its original form while benefiting from the performance optimizations of minification.

Inventive Principle:
Principle #26Copying

3Reliability

If the debugger monitors all code including external libraries, then comprehensive error detection is achieved, but debugging noise and false positives increase

Engineering Contradiction:
Improveerror detection completenessVSAvoiddebugging signal clarity
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The patent extracts and separates the debugging monitoring of user code from external library code. The Just My Code mechanism identifies errors originating from user code and presents them to the developer, while automatically filtering out errors from external libraries and plugins. This extraction maintains comprehensive error detection for user code while removing the noise and false positives that would otherwise clutter the debugging experience.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9424163B2Exception and debugging behaviors for JavaScript debugging using just my code
Publication Date: 2016.08.23 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9424163B2 patent drawing
  • US9424163B2 patent drawing
  • US9424163B2 patent drawing

AI summary

Just My Code debugging allows developers to work on problems within their own code without noise from libraries, plugins and other unrelated code. Typical debugger behaviors may be modified based upon the identification or characterization of JavaScript code as “My Code,”“Library Code,” or “Unrelated Code.” The debugger behaviors that may be modified depending upon the code's characterization include, for example, first-chance exception handling, unhandled exception handling, the behavior of the debugger at explicit user breakpoints, the behavior when a user directs the debugger to break upon the next statement, and the behavior of the debugger when the user executes a stepping gesture. The debugger's visualizes core elements of the program state, such as the call stack, depending upon the identification or characterization of the code.