6.9 KiB
Changelog
All notable changes to this project will be documented in this file.
[1.1.4] - 2026-04-12
Changed
- Replaced
xml2jswithfast-xml-parser— smaller, zero dependencies, faster SVD parsing
Fixed
- Guard against missing
addressBlockandregistersin SVD peripheral definitions - Removed redundant
toLowerCase()call on enum values (already handled byparseBigInt)
[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()withsubstring()for forward compatibility - Type Consistency: All
resetValuefields now usebigint(PeripheralNode, ClusterNode, RegisterNode)
Fixed
- BigInt precision loss: Fixed precision loss for peripheral fields >53 bits
extractBitsBigInt()now returnsbigintinstead ofnumberupdateBits()now acceptsbigintfor full precision- Enumeration values stored as
bigint - All
resetValuefields now usebigintfor consistency
- Input cancellation: Handle undefined input from
showInputBox()gracefully - Null safety: Added null-safe fallback for
match()inbinaryFormat()
Modified Files
src/frontend/peripheral.ts:- Added undefined input handling in
performUpdate() - Changed
updateBits()to acceptbigintfor precision - Changed
extractBits()to returnbigint - Updated enumeration map to store
bigintvalues - Replaced deprecated
substr()withsubstring() - Changed all
resetValuefields tobigintfor type consistency
- Added undefined input handling in
src/utils.ts:- Changed
extractBitsBigInt()to returnbigint(no Number conversion) - Added null-safe fallback for
match()inbinaryFormat()
- Changed
New Files
__tests__/frontend/device-defaults.test.ts- Device defaults inheritance testsCODE_REVIEW_FIX.md- Simplified logic documentationNULL_HANDLING_FIX.md- Null handling fix documentationORDERING_FIX.md- Breakpoint ordering fix documentationBIGINT_PRECISION_FIX.md- BigInt precision fix documentationALL_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 onfor 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 documentationREADME.md- Complete project documentationCHANGELOG.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-asyncinitialization command - Improved error handling for invalid breakpoint numbers
- Enhanced
src/backend/adapter.ts:- Fixed
setFunctionBreakPointsRequestto properly handle breakpoint objects - Corrected null handling and object property access
- Preserve 1:1 breakpoint ordering with DAP specification
- Fixed
New Files
__tests__/mi2/breakpoint-parsing.test.ts- Comprehensive breakpoint parsing tests__tests__/backend/breakpoint-error-handling.test.ts- Null handling and error testsMI_UPGRADE.md- MI3/MI4 upgrade documentationREADME.md- Project documentationCHANGELOG.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.mdfor implementation details - Run
npm testto verify compatibility - Check
__tests__/mi2/breakpoint-parsing.test.tsfor 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.