# 调试客户端

通过 DBGp 可以支持调试功能, DGBp 是一种常见的支持多语言和调试器 UI 通信的调试器协议. 请参阅交互式调试了解更多细节. 在这个页面中列出了一些与 AutoHotkey 兼容的 UI 或 "客户端":

- SciTE4AutoHotkey
- XDebugClient
- Notepad++ DBGp Plugin
- 基于脚本的客户端
- 命令行客户端
- 其他

## SciTE4AutoHotkey

SciTE4AutoHotkey 是一个免费的基于 SciTE 的 AutoHotkey 脚本编辑器. 除了 DBGp 支持, 它还为 AutoHotkey 提供了语法高亮, 调用提示, 参数信息和自动完成, 以及其他拥有的编辑特性和辅助工具.

调试功能包括:

- 断点.
- 运行, 逐语句/逐过程/跳出.
- 查看调用堆栈.
- 列出局部域和全局域中变量的名称和内容.
- 在变量上悬停时显示其内容.
- 检查或编辑变量的内容.
- 查看对象的结构.

http://fincs.ahk4.net/scite4ahk/

## XDebugClient

XDebugClient 是一个基于 .NET Framework 2.0 的简单开源前端 DBGp 客户端. XDebugClient 一起最初设计用于带 Xdebug 的 PHP, 不过下面有一个自定义版本可用于 AutoHotkey 中.

改变:

- 允许调试器引擎报告 "php" 外的其他语言.
- 添加 AutoHotkey 语法高亮.
- 自动监听调试器引擎的连接, 而不需要等待用户点击 开始监听.
- 截去属性值中首个空字符及其后面的内容, 因为当前 AutoHotkey 返回整个变量的内容而 XDebugClient 无法正确显示二进制内容.

下载: 二进制; 源代码(另请参阅 SharpDevelop, Dockpanel Suite 和 Advanced TreeView.)

用法:

- 运行 XDebugClient.
- 运行 AutoHotkey/Debug.XDebugClient 会自动打开脚本文件.
- 在左边距点击以至少设置一个断点.
- 在调试菜单中选择运行或按下 `F5`.
- 执行到断点时, 使用调试菜单或快捷键进行单步调试或继续执行脚本.

特性:

- 源码语法高亮只读显示.
- 断点.
- 运行, 逐语句/逐过程/跳出.
- 查看调用堆栈.
- 检查变量 - 选择变量名, 右键点击, 检查.

已知问题:

- 当脚本运行时用户界面不响应用户的输入.
- 没有提供列出变量或设置变量值的结构.

## Notepad++ DBGp 插件

一个可作为 Notepad++ 插件使用的 DBGp 客户端. 它设计用于 PHP, 不过用于 AutoHotkey 时同样工作地很好.

下载: 请参阅 DBGp plugin for Notepad++.

用法:

- 运行 Notepad++.
- 通过 插件, DBGp, 配置... 配置 DBGp 插件

  注意: 必须配置文件映射. 大多数用户不进行远程调试, 因此可以简单地复选 忽略所有映射(本地 windows 安装).

- 通过工具栏或 插件, DBGp, 调试器 显示调试器面板.
- 打开需调试的脚本文件.
- 至少设置一个断点.
- 运行 AutoHotkey/Debug.
- 使用调试器工具栏或快捷键控制调试器.

特性:

- 根据用户的配置进行语法高亮显示.
- 断点.
- 运行, 逐语句/逐过程/跳出, 运行到光标, 停止.
- 查看局部/全局变量.
- 监视用户指定的变量.
- 查看调用堆栈.
- 悬停在变量上时显示其内容.
- 可配置的快捷键 - 设置, 快捷映射..., 插件命令.

已知问题:

- 悬停在单字母的变量名上时不会显示变量内容 - 例如, 悬停在 `a` 将试图获取 `a` 或 `a` 变量的内容.
- 悬停在文本上将试图把文本作为变量名获取其内容, 即使文本中含有非法字符.
- 如果属性获取失败 Notepad++ 会变得不稳定, 在上述问题的来源中这是显著的问题. 为了避过此问题, AutoHotkey 接到获取一个不存在或非法变量的请求时发送一个空属性而不是错误码.

## 基于脚本的客户端

GitHub 上有一个基于脚本的 DBGp 库和示例客户端.

- dbgp_console.ahk: 简单的命令行客户端.
- dbgp_test.ahk: 异步调试的示例.
- dbgp_listvars.ahk: 列出所有运行中脚本变量的示例客户端.

GitHub: Lexikos/dbgp

DebugVars 脚本提供了一种检查和改变任何运行脚本(除了已编译脚本) 的变量和对象的内容的图形用户界面. 它也可作为一个使用 dbgp.ahk 库的范本.

GitHub: Lexikos/DebugVars

## 命令行客户端

xdebug.org 有一个可用的命令行客户端, 但并不适合大多数用户使用因为它需要您对 DBGp 协议足够熟悉.

## 其他

还有一些可用的其他 DBGp 客户端, 不过没有在 AutoHotkey 测试过. 关于这些客户端的列表, 请参阅 Xdebug: 文档.

dftg