Files

6.9 KiB

Changelog

All notable changes to this project will be documented in this file.

[1.1.4] - 2026-04-12

Changed

  • Replaced xml2js with fast-xml-parser — smaller, zero dependencies, faster SVD parsing

Fixed

  • Guard against missing addressBlock and registers in SVD peripheral definitions
  • Removed redundant toLowerCase() call on enum values (already handled by parseBigInt)

[1.1.3] - 2026-04-06

Added

  • Detect and handle watchpoint/data-breakpoint stop events, emitting dedicated stop notifications

Fixed

  • More reliable stack-frame identification and reset of frame mappings when execution resumes
  • Safer variable and scope resolution for local and static variables, with graceful handling when context is missing
  • Register reads scoped to the active thread in multi-threaded sessions
  • Signals better mapped to pause reasons; numeric parsing hardened for base-10

[1.1.2] - 2026-03-22

Changed

  • Deprecated API: Replaced substr() with substring() for forward compatibility
  • Type Consistency: All resetValue fields now use bigint (PeripheralNode, ClusterNode, RegisterNode)

Fixed

  • BigInt precision loss: Fixed precision loss for peripheral fields >53 bits
    • extractBitsBigInt() now returns bigint instead of number
    • updateBits() now accepts bigint for full precision
    • Enumeration values stored as bigint
    • All resetValue fields now use bigint for consistency
  • Input cancellation: Handle undefined input from showInputBox() gracefully
  • Null safety: Added null-safe fallback for match() in binaryFormat()

Modified Files

  • src/frontend/peripheral.ts:
    • Added undefined input handling in performUpdate()
    • Changed updateBits() to accept bigint for precision
    • Changed extractBits() to return bigint
    • Updated enumeration map to store bigint values
    • Replaced deprecated substr() with substring()
    • Changed all resetValue fields to bigint for type consistency
  • src/utils.ts:
    • Changed extractBitsBigInt() to return bigint (no Number conversion)
    • Added null-safe fallback for match() in binaryFormat()

New Files

  • __tests__/frontend/device-defaults.test.ts - Device defaults inheritance tests
  • CODE_REVIEW_FIX.md - Simplified logic documentation
  • NULL_HANDLING_FIX.md - Null handling fix documentation
  • ORDERING_FIX.md - Breakpoint ordering fix documentation
  • BIGINT_PRECISION_FIX.md - BigInt precision fix documentation
  • ALL_FIXES_COMPLETE.md - Complete summary of all fixes

[1.1.1] - 2026-03-13

Fixed

  • Avoid crash when optional <peripheral> is missing in svd. issue

[1.1.0] - 2026-03-11

Added

  • MI3/MI4 Protocol Support: Full compatibility with GDB 9.0+ (MI3) and GDB 12.0+ (MI4)

  • Enhanced Breakpoint Parsing: Robust handling of multi-location breakpoints (template functions, inline code)

  • MI Async Mode: Added gdb-set mi-async on for better async behavior with modern GDB

  • Comprehensive Test Suite: 20 new tests for breakpoint parsing across all MI versions

  • Documentation:

    • MI_UPGRADE.md - Detailed upgrade documentation
    • README.md - Complete project documentation
    • CHANGELOG.md - Version history
  • Breakpoint Number Extraction: Now handles both single and multi-location breakpoint formats

  • Error Handling: Added NaN check for breakpoint number parsing

  • Package Version: Bumped to 1.1.0

  • Package Description: Updated to reflect MI3/MI4 support

Fixed

  • Multi-location breakpoint parsing for template functions
  • Compatibility with GDB 12.0+ default MI4 mode
  • Breakpoint script field handling (MI4 list format)
  • Function breakpoint handling: Fixed incorrect array access in setFunctionBreakPointsRequest
  • Null handling: Proper filtering of failed breakpoint results
  • Breakpoint ordering: Preserve 1:1 correspondence with DAP specification (unverified placeholders for failed breakpoints)

Technical Details

Modified Files

  • src/backend/mi2/mi2.ts:
    • Enhanced addBreakPoint() method with MI3/MI4 support
    • Added mi-async initialization command
    • Improved error handling for invalid breakpoint numbers
  • src/backend/adapter.ts:
    • Fixed setFunctionBreakPointsRequest to properly handle breakpoint objects
    • Corrected null handling and object property access
    • Preserve 1:1 breakpoint ordering with DAP specification

New Files

  • __tests__/mi2/breakpoint-parsing.test.ts - Comprehensive breakpoint parsing tests
  • __tests__/backend/breakpoint-error-handling.test.ts - Null handling and error tests
  • MI_UPGRADE.md - MI3/MI4 upgrade documentation
  • README.md - Project documentation
  • CHANGELOG.md - This file

Compatibility

Supported GDB Versions

  • GDB 7.x - 8.x (MI2) ✅
  • GDB 9.x - 11.x (MI3) ✅
  • GDB 12.x+ (MI4) ✅

Supported OpenOCD Versions

  • OpenOCD 0.10.0+ ✅
  • OpenOCD 0.12.0+ ✅ (Recommended)

Migration Guide

No breaking changes. The extension automatically detects and adapts to the MI version used by your GDB instance.

For Users

  • Update GDB to version 12.0+ for best results (optional)
  • No configuration changes required
  • Existing launch configurations continue to work

For Developers

  • Review MI_UPGRADE.md for implementation details
  • Run npm test to verify compatibility
  • Check __tests__/mi2/breakpoint-parsing.test.ts for examples

Testing

All tests passing:

  • 20 breakpoint parsing tests (MI2/MI3/MI4)
  • 18 error handling, null safety, and ordering tests
  • 9 BigInt precision tests (updated for bigint return values)
  • 86 existing tests (workflow, parseBigInt, etc.)
  • Total: 133 tests, 100% pass rate
npm test
# Test Suites: 5 passed, 5 total
# Tests:       133 passed, 133 total

Known Issues

None at this time.

Deprecations

None. MI2 support is maintained for backward compatibility.


[1.0.0] - Previous Release

Added

  • Initial release
  • GDB MI2 protocol support
  • Basic debugging features:
    • Breakpoint management
    • Variable inspection
    • Memory viewer
    • Register viewer
    • Disassembly view
    • Peripheral viewer
    • Call stack navigation
    • Step debugging
  • VSCode integration
  • PlatformIO/Arduino support
  • OpenOCD integration

Supported Platforms

  • Arduino (AVR, ARM)
  • ESP32 / ESP8266
  • STM32 (all series)
  • ARM Cortex-M microcontrollers

Future Roadmap

Planned for 1.2.0

  • Enhanced peripheral viewer with SVD file support
  • Improved memory editor with data visualization
  • RTOS thread awareness
  • Better error messages and diagnostics

Planned for 2.0.0

  • DAP (Debug Adapter Protocol) native support
  • Python GDB scripting integration
  • Advanced breakpoint types (watchpoints, tracepoints)
  • Performance profiling integration

Contributing

See README.md for contribution guidelines.

License

See LICENSE file for details.