# 调试客户端

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

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

## SciTE4AutoHotkey

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

调试功能包括:

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

https://www.autohotkey.com/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`.
- 执行到断点时, 使用调试菜单或快捷键进行单步调试或继续执行脚本.

特性:

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

已知问题:

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

## 基于脚本的客户端

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