PowerToys includes several specialized tools to help with debugging and troubleshooting. These tools are designed to make it easier to diagnose issues with PowerToys features.
- Location:
/tools/FancyZonesHitTest/ - Purpose: Tests FancyZones layout selection logic
- Functionality:
- Simulates mouse cursor positions
- Highlights which zone would be selected
- Helps debug zone detection issues
- Location:
/tools/FancyZonesDrawLayoutTest/ - Purpose: Tests FancyZones layout drawing logic
- Functionality:
- Visualizes how layouts are drawn
- Helps debug rendering issues
- Tests different monitor configurations
- Location:
/tools/FancyZonesZonableTester/ - Purpose: Tests if a window is "zonable" (can be moved to zones)
- Functionality:
- Checks if windows match criteria for zone placement
- Helps debug why certain windows can't be zoned
- Location:
/tools/MonitorPickerTool/ - Purpose: Diagnostic tool for identifying WinAPI bugs related to physical monitor detection
- Functionality:
- Lists all connected monitors
- Shows detailed monitor information
- Helps debug multi-monitor scenarios
- Location:
/tools/StylesReportTool/ - Purpose: Collect information about an open window
- Functionality:
- Reports window styles
- Shows window class information
- Helps debug window-related issues in modules like FancyZones
The Styles Report Tool is built separately from the main PowerToys solution:
nuget restore .\tools\StylesReportTool\StylesReportTool.sln
msbuild -p:Platform=x64 -p:Configuration=Release .\tools\StylesReportTool\StylesReportTool.sln
- Location:
/tools/PowerRenameContextMenuTest/ - Purpose: Tests PowerRename context menu integration
- Functionality:
- Simulates right-click context menu
- Helps debug shell extension issues
- Location:
/tools/verification-scripts/ - Purpose: Scripts to verify PowerToys installation and functionality
- Functionality:
- Verify binary integrity
- Check registry entries
- Test module loading
- Location:
/tools/CleanUp/ - Purpose: Clean up PowerToys installation artifacts
- Functionality:
- Removes registry entries
- Deletes settings files
- Helps with clean reinstallation
- Most tools can be run directly from the command line
- Some tools require administrator privileges
- Tools are typically used during development or for advanced troubleshooting
- Bug Report Tool can collect and package the output from several of these tools
When creating new debugging tools:
- Place the tool in the
/tools/directory - Follow existing naming conventions
- Document the tool in this file
- Include a README.md in the tool's directory
- Consider adding the tool's output to the Bug Report Tool if appropriate