Debugging Clients
Additional debugging features are supported via DBGp, a common debugger protocol for languages and debugger UI communication. See Interactive Debugging for more details. Some UIs or "clients" known to be compatible with AutoHotkey are listed on this page:
SciTE4AutoHotkey
SciTE4AutoHotkey is a free, SciTE-based AutoHotkey script editor. In addition to DBGp support, it provides syntax highlighting, calltips/parameter info and auto-complete for AutoHotkey, and other useful editing features and scripting tools.
Debugging features include:
- Breakpoints.
- Run, Step Over/Into/Out.
- View the call stack.
- List name and contents of variables in local/global scope.
- Hover over variable to show contents.
- Inspect or edit variable contents.
- View structure of objects.
https://www.autohotkey.com/scite4ahk/
XDebugClient
XDebugClient is a simple open-source front-end DBGp client based on the .NET Framework 2.0. XDebugClient was originally designed for PHP with Xdebug, but a custom build compatible with AutoHotkey is available below.
Changes:
- Allow the debugger engine to report a language other than "php".
- Added AutoHotkey syntax highlighting.
- Automatically listen for a connection from the debugger engine, rather than waiting for the user to click Start Listening.
- Truncate property values at the first null-character, since AutoHotkey currently returns the entire variable contents and XDebugClient has no suitable interface for displaying binary content.
Download: Binary; Source Code (also see SharpDevelop, Dockpanel Suite and Advanced TreeView.)
Usage:
- Launch XDebugClient.
- Launch AutoHotkey /Debug. XDebugClient should automatically open the script file.
- Click the left margin to set at least one breakpoint.
- Choose Run from the Debug menu, or press F5.
- When execution hits a breakpoint, use the Debug menu or shortcut keys to step through or resume the script.
Features:
- Syntax highlighted, read-only view of the source code.
- Breakpoints.
- Run, Step Over/Into/Out.
- View the call stack.
- Inspect variables - select a variable name, right-click, Inspect.
Issues:
- The user interface does not respond to user input while the script is running.
- No mechanisms are provided to list variables or set their values.
Notepad++ DBGp Plugin
A DBGp client is available as a plugin for Notepad++. It is designed for PHP, but also works well with AutoHotkey.
Download: See DBGp plugin for Notepad++.
Usage:
Features:
- Syntax highlighting, if configured by the user.
- Breakpoints.
- Run, Step Over/Into/Out, Run to cursor, Stop.
- View local/global variables.
- Watch user-specified variables.
- View the call stack.
- Hover over a variable to view its contents.
- User-configurable shortcut keys - Settings, Shortcut Mapper..., Plugin commands.
Issues:
- Hovering over a single-letter variable name does not work - for instance, hovering over
a
will attempt to retrieve a
or a
.
- Hovering over text will attempt to retrieve a variable even if the text contains invalid characters.
- Notepad++ becomes unstable if property_get fails, which is particularly problematic in light of the above. As a workaround, AutoHotkey sends an empty property instead of an error code when a non-existent or invalid variable is requested.
Script-based Clients
A script-based DBGp library and example clients are available from GitHub.
- dbgp_console.ahk: Simple command-line client.
- dbgp_test.ahk: Demonstrates asynchronous debugging.
- dbgp_listvars.ahk: Example client which justs lists the variables of all running scripts.
GitHub: Lexikos / dbgp
The DebugVars script provides a graphical user interface for inspecting and changing the contents of variables and objects in any running script (except compiled scripts). It also serves as a demonstration of the dbgp.ahk library.
GitHub: Lexikos / DebugVars
Command-line Client
A command-line client is available from xdebug.org, however this is not suitable for most users as it requires a decent understanding of DBGp (the protocol).
Others
A number of other DBGp clients are available, but have not been tested with AutoHotkey. For a list, see Xdebug: Documentation.