Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>MapVisualNew to Visual Studio Code? Get it now.
MapVisual

MapVisual

kali20177

|
3 installs
| (0) | Free
Visualize embedded linker map files (GNU ld / LLVM lld) as a sortable, filterable symbol list with C++ demangling. Flash/RAM usage at a glance.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
MapVisual icon

MapVisual

Linker map files, visualized inside VS Code.

CI

English | 简体中文

A linker map records where object files are mapped into memory, how common symbols are allocated, which archive members the link pulled in, and the values assigned to symbols, whether or not those symbols end up in the image. A real map runs to megabytes of dense text. MapVisual turns the .map from GNU ld or LLVM lld into a sortable, filterable symbol list with per-symbol Flash and RAM use, a treemap, a build-to-build diff, and a built-in C++ demangler.

Features

  • Open a map: press Alt+M and pick one, or double-click any .map file. Rebuild your firmware and the open view refreshes itself.
  • Symbol-level list: sort by size, name, kind, section, object or address; group by object, library, section kind or directory; filter by text, kind or minimum size; hide compiler and runtime objects; see what --gc-sections removed. Virtual scrolling keeps multi-megabyte maps fast.
  • Memory usage: region usage bars, section-kind composition and the largest symbols in the side panel, plus a status-bar readout for the active map.
  • Locate in raw map: click any symbol row and MapVisual opens the raw map beside the view with that line highlighted. Copy actions live in the row context menu.
  • Treemap: switch the list to an area-proportional treemap and drill into any group.
  • Map diff: compare two builds symbol by symbol (added / removed / changed), with Flash and RAM totals and CSV export.
  • Built-in C++ demangling: the extension bundles a WASM demangler, so you need no toolchain or configuration. Symbols recovered from section names (.text._ZN…) are demangled too, and both the mangled and demangled forms are searchable.
  • Real linker output: handles -ffunction-sections entries, LTO merged sections, --gc-sections discards, *fill* padding, static-archive members and relax annotations, and counts .data in both Flash and RAM.
  • CSV export: the filtered rows, or just the rows you selected.
  • Go to source: jump from a symbol to its source file in your workspace.
  • CLI included: the same parser runs from the command line too (see below).

Getting started

  1. Install the extension from the marketplace (or from a .vsix).
  2. Open a workspace containing your project and press Alt+M, or double-click any .map file. MapVisual opens it by default.
  3. To read a map as plain text, use the Open as Text button in the editor title bar. To change the default permanently, right-click the file → Open With… → Configure default editor.

While reading a map:

  • Toolbar: C++ demangling, System (hide crt/libgcc/libc), Removed (gc-sectioned symbols), Treemap, Raw (open the raw map beside), CSV export.
  • Rows: a plain click locates the symbol's line in the raw map; Ctrl/Cmd+click multi-selects rows for a partial CSV export; right-click opens the row menu (copy the demangled name, the mangled name or the whole row, filter by object, go to source).
  • Status bar: Flash and RAM totals for the map you are looking at.

Commands

Command Key
MapVisual: Open Map File Alt+M
MapVisual: Compare Two Maps Alt+Shift+D
MapVisual: Open as Text editor title bar (while viewing a map)

Settings

Setting Default Description
mapvisual.demangle true Demangle C++ symbol names (built-in WASM demangler).
mapvisual.formatOverride auto Force the map format instead of auto-detection (gnu-ld / lld).

Command line

The parser does not depend on VS Code. After building, the same engine runs as a CLI for scripts and AI assistants, with summary, symbols, treemap and diff commands. Output is JSON by default, or Markdown with --md:

node dist/cli.js summary firmware.map
node dist/cli.js symbols firmware.map --top 20 --kind code
node dist/cli.js treemap firmware.map --depth 2
node dist/cli.js diff old.map new.map

See docs/CLI.md for the full contract.

Supported toolchains

Toolchain Status
GNU ld (gcc, arm-none-eabi-gcc) ✅ verified against real firmware builds
LLVM lld (ld.lld) ✅ verified against real builds
Keil armlink planned
IAR ilink planned

Privacy

Parsing runs entirely on your machine, in a local worker process. The extension collects no telemetry and makes no network requests, so your firmware's symbols stay on your machine.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft