Skip to content

windbg

This directory provides Talon integration for WinDbg (Windows Debugger), allowing you to control debugging sessions, inspect memory, toggle breakpoints, and manage workspace windows using voice commands.

The integration is built around two key files:

  • windbg.py – Sets up the Talon contexts, captures, and overrides generic debugger actions with WinDbg-specific keys and CLI commands.
  • windbg.talon – Defines the voice commands that map to WinDbg keyboard shortcuts, GUI view commands, and symbol-loading routines.

How It Works

This integration acts as an implementation of Talon's generic user.debugger interface, mapping standard debugger tasks to their WinDbg equivalents.

Context and Activation

The tag user.windbg is declared in windbg.py. This tag can be toggled using two defined module actions: * user.windbg_enable() * user.windbg_disable()

When the user.windbg tag is active, the context-specific overrides in windbg.py take effect, and the voice commands defined in windbg.talon become available.

Action Implementations

windbg.py overrides the core debugging actions (from the user namespace) to interface with WinDbg. Examples include:

  • Execution Control: Maps standard actions like debugger_step_into() to f8, debugger_step_over() to f10, and debugger_continue() to f5.
  • Breakpoint Management: Sends WinDbg command line inputs such as bp (software breakpoints), ba e 1 (hardware execution breakpoints), or bc * (clear all breakpoints).
  • Memory and Analysis: Intercepts actions to dump memory structures, such as using da for ASCII string dumps, du for Unicode, and dps to display pointers.

Voice Commands and Windows Management

The windbg.talon file links voice triggers to debugger controls, workspace windows, and common debugging workflows:

  • Window Switching: Voice commands like "view command" (alt-1), "view locals" (alt-3), and "view call stack" (alt-6) make it easy to jump between WinDbg's docked windows.
  • Symbol and Module Management: Includes quick commands for managing symbol paths and reloading symbols (e.g., "add microsoft symbols" writes the Microsoft Symbol Server path; "force reload symbols" executes .reload /f).
  • Captured Definitions: Includes a list capture for common Windows DLLs (e.g., "lib core" types ntdll, "lib user" types user32) to make referencing targets faster.