Debugger 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.
http://fincs.ahk4.net/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.