Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>ProcMon ViewerNew to Visual Studio Code? Get it now.
ProcMon Viewer

ProcMon Viewer

tmidorikawa

| (0) | Free
Read-only Process Monitor PML v9 viewer for large and split captures with native PDB stack symbol resolution.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

ProcMon Viewer

ProcMon Viewer icon

ProcMon Viewer is a read-only Visual Studio Code custom editor for Windows Process Monitor PML captures. It opens captures locally and never modifies the source PML files.

Prerequisites

Basic capture browsing requires Visual Studio Code 1.129 or later and a little-endian Process Monitor PML version 9 capture. Process Monitor is needed only to create captures on Windows; it does not need to be installed on the computer used for analysis.

LLVM for native symbols

Native function and source resolution requires LLVM 22 or later. Install LLVM, then restart VS Code so the extension can detect llvm-symbolizer and llvm-pdbutil in PATH or a standard installation location.

Windows (WinGet)

winget install --exact --id LLVM.LLVM
& "$env:ProgramFiles\LLVM\bin\llvm-symbolizer.exe" --version
& "$env:ProgramFiles\LLVM\bin\llvm-pdbutil.exe" --version

macOS (Homebrew)

brew install llvm
"$(brew --prefix llvm)/bin/llvm-symbolizer" --version
"$(brew --prefix llvm)/bin/llvm-pdbutil" --version

Azure CLI for authenticated symbol servers

Azure CLI is optional. It is used only when an explicitly configured authenticated symbol server requires Microsoft Entra credentials. Microsoft Public Symbols and unauthenticated servers do not require it.

Platform Install command
Windows winget install --exact --id Microsoft.AzureCLI
macOS brew update && brew install azure-cli

After installation, open a new terminal. Sign in interactively and select the subscription associated with the symbol server, then restart VS Code:

az login
az account set --subscription "<subscription-name-or-id>"
az account show

Use az login --tenant "<tenant-id>" when the account belongs to multiple tenants. Add --use-device-code when a browser cannot be opened. Do not put passwords or access tokens on the command line.

Open a capture

  1. Install ProcMon Viewer from the VS Code Extensions view or from a provided VSIX.
  2. Open a .pml file in VS Code. If another editor opens it, use Open With... > ProcMon Viewer.
  3. Wait for indexing and the initial Filter to finish. Progress appears in the editor.

File extensions are matched case-insensitively. For split captures named like trace.pml, trace-1.pml, and trace-2.pml, open any member; ProcMon Viewer discovers the contiguous family and presents one capture-ordered event space.

Use the views

View What you can do
Logfile Summary Review capture version, architecture, member, event, process, module, stack, filter, and export counts.
Events Browse, filter, highlight, select, copy, export, bookmark, and inspect events.
Bookmarks Page saved events, remove bookmarks, and return to an event without clearing the active Filter.
Processes Explore the captured process tree, lifetimes, metadata, icons, and modules. Double-click a process to add an exact Include rule and open Events.
Errors Group non-noise failures by process, class, operation, and result, then open a sample event.
Lifecycle Browse process, thread, and image lifecycle records and open their source events.
Timeline Review event density and error overlays; select a time bucket to filter Events.
Analysis Summarize File, Registry, Network, Process Activity, Stack, occurrence counts, or a two-field cross-reference, then drill down to Events.
Symbols Map stack addresses to modules and RVAs, then resolve native function and source locations.

Work with events

  • Open Filter with Ctrl/Cmd+F or Ctrl/Cmd+L. Add typed Include or Exclude rules, enable or disable rows, and choose oldest-first or newest-first order.
  • A first-seen capture starts with 21 enabled exclusions for common ProcMon, low-level I/O, NTFS metadata, and profiling noise. Reset to defaults restores them; Clear filters saves an intentionally empty Filter.
  • Use More actions > Columns to choose from all 36 fields. Scroll horizontally when the selected columns exceed the viewport.
  • Click any cell to select its event. Use Arrow, Page, Home, End, wheel, scrollbar, or trackpad navigation across large captures.
  • Use Shift and Cmd/Ctrl selection for multiple rows. Copy selected visible columns as TSV, or export the active Filter and visible columns to CSV or JSONL.
  • Double-click an event to open or update a detachable Event Details window. The inline Inspector and details window provide Event, Process, and paged Stack views.
  • Add bookmarks and independent color highlights without changing Filter membership. Navigate them from More actions or the Command Palette commands below.
  • Event timestamps, process lifetimes, lifecycle entries, bookmarks, Timeline ranges, and PE/COFF module timestamps use UTC in the fixed yyyy/MM/dd HH:mm:ss format.
  • Module tables in Processes, the Events Inspector, and Event Details start with wider Timestamp and Version columns. Drag any column separator to adjust that table for the current session.
  • Module Version display omits parenthesized WinBuild metadata.

Resolve native symbols

  1. Select an event with a recorded stack, then open Stack in the Inspector, Event Details, or the Symbols view.
  2. Check that LLVM is reported as ready. Choose offline mode for verified-cache-only resolution, or online mode when symbol downloads are allowed.
  3. Select Resolve for the displayed stack page or current viewport. Resolution never starts automatically and can be cancelled.

Online resolution tries configured HTTPS SymStore servers in order and Microsoft Public Symbols last. Downloaded PE/PDB artifacts are identity-checked before use and retained in the verified cache. Configure authenticated Azure DevOps endpoints as https://artifacts.dev.azure.com/{organization}/_apis/symbol/symsrv/ and complete the Azure CLI sign-in described above first.

Some symbol servers retain a PDB but not its matching PE image. In Online mode on Windows, ProcMon Viewer automatically searches the standard Edge, WebView2, System32, and SysWOW64 roots for an exact timestamp/SizeOfImage match. When analyzing an older capture on another computer, copy the matching application version directory from the capture computer and add its absolute local path to procmonViewer.symbols.moduleDirectories. Only a matching PE basename and identity are promoted to the verified cache; UNC/device roots are rejected, and configured paths are not sent to the Webview or included in diagnostics. Offline mode continues to read only the verified cache.

If llvm-symbolizer crashes for one native PDB address, resolution isolates that address and falls back to the nearest function in LLVM's validated PDB public-symbol map. Other addresses retain normal inline/source results; a public fallback has a function name but no source line.

When a module fails, the completion status names it and reports the failed PE, PDB, or LLVM stage together with sanitized per-endpoint state and HTTP diagnostics. Large failure sets are bounded in the status display.

Commands

Command Palette entry Action
ProcMon Viewer: Previous Highlight Open Events and select the previous highlighted event in the active Filter.
ProcMon Viewer: Next Highlight Open Events and select the next highlighted event in the active Filter.
ProcMon Viewer: Previous Bookmark Open Events and select the previous bookmark in the active Filter.
ProcMon Viewer: Next Bookmark Open Events and select the next bookmark in the active Filter.

GitHub Copilot analysis

In Visual Studio Code 1.129 or later, select the extension-contributed ProcMon Analyst agent for a guided read-only investigation. You can also reference an individual tool such as #inspectProcmonCapture. Open the PML in ProcMon Viewer first, or pass an absolute local .pml path to the inspection tool.

Tool Purpose
inspect_capture Open a capture family and return path-free structure, counts, available fields, limits, and an opaque captureId.
query_events Apply typed filters and return a bounded page of selected event fields.
summarize_events Run one of the Analysis summaries and return bounded groups.
inspect_event Inspect one stable event index, including process, operation detail, and mapped frames.
inspect_capture_view Page operation coverage, Processes, Errors, Lifecycle, or Timeline data.
resolve_event_stack Resolve a bounded event stack through verified artifacts and LLVM 22.
  • Every data-bearing invocation asks for confirmation before bounded PML values are sent to the selected language model. Tool inputs and results are not persisted by the extension.
  • Stack resolution defaults to cacheOnly, which makes no network request. online requires an explicit argument and confirmation.
  • Copilot tools cannot write PML, extract a whole capture without bounds, resolve endpoint names automatically, or open paths recorded in a capture.

Settings

Setting Default Description
procmonViewer.symbols.offline false Start each Symbols panel in verified-cache-only mode.
procmonViewer.symbols.servers [] HTTPS SymStore-compatible servers tried in listed order, with at most 16 entries. Microsoft Public Symbols is always tried last.
procmonViewer.symbols.moduleDirectories [] Up to 16 absolute local roots searched to depth 2 for identity-matching PE files. Standard Windows Edge, WebView2, and system roots are automatic.

Example settings.json:

{
  "procmonViewer.symbols.offline": false,
  "procmonViewer.symbols.servers": [
    "https://artifacts.dev.azure.com/example/_apis/symbol/symsrv/"
  ],
  "procmonViewer.symbols.moduleDirectories": [
    "/path/to/copied/application/version"
  ]
}

The Symbols view can override offline mode for the current editor session. Server and module-directory changes apply to the next resolution. Azure CLI starts only for a recognized authenticated endpoint that you explicitly list; credentials are never attached to another endpoint or forwarded to an artifact redirect. SymWeb file.ptr targets are accepted only when they name a signed HTTPS Azure Blob artifact with the expected basename; local, UNC, device, and other URL targets are rejected.

Compatibility

Capture Status
Little-endian PML v9 x64 Supported.
Little-endian PML v9 x86 Supported. Structure-derived ReadFile/WriteFile fields are marked as pending controlled capture validation.
Split PML v9 family Supported for contiguous numeric members; duplicate aliases, internal gaps, incompatible members, or changed discovered members fail explicitly.
Member larger than 4 GiB Supported with checked five-byte event offsets.
Sparse or unknown v9 record Remains browsable with explicit generic names or unsupported-detail status where decoding is unavailable.
Malformed capture Rejected with a bounded diagnostic that omits the capture path.
Other PML versions or byte order Rejected explicitly.

Privacy and limitations

  • Input PML files are immutable. ProcMon capture creation, live capture, pause/resume, backing files, boot logging, and drop-filtered-events capture mode are not provided.
  • PML files can contain private machine and user data. Capture values are read locally in bounded ranges and are not written to extension logs.
  • Configured Filter operands and order are the bounded local-persistence exception. Bookmarks persist only a path-free capture fingerprint and event indexes; suggestions, decoded rows, and export paths remain session-only or Host-only.
  • Filtered export writes CSV or JSONL to a local destination, not PML.
  • Automatic network-name resolution and opening paths recorded in a capture are disabled because captures can contain private, foreign, Windows-only, or untrusted values.
  • A capture family is limited to 256 discovered members and 50,000,000 aggregate event slots. An absent unknown trailing member cannot be inferred from filenames.

Contributor setup, architecture, build, test, benchmark, controlled-capture, and packaging information is maintained in DEVELOPMENT.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft