文档1.0 (latest)
页面调试 · 21 / 29

调试

IDE 可以在调试器下运行您的 Python 代码,这样您就可以在某一行暂停并检查调用栈和变量。共有两种调试模式,均从调试工具栏启动。

模式运行内容
Debug Run在调试器下直接运行当前 Python 文件。只要打开了文件就始终可用。
Debug Test在调试器下让您的策略遍历历史 K 线(回测)。仅当活动文件是实现了回测回调的策略时才会出现。

Debug Test 会先打开回测配置对话框,然后再运行。它仅支持单次回测——不支持优化扫描——并且仅支持 Selected symbols 来源(不支持选股器)。它读取基本面数据的方式与回测完全相同,包括披露日期规则,因此您检查到的内容与 Test 运行所看到的一致。

当 QuantCraft AI 控制 IDE 时,调试工具栏会被隐藏;AI 会话结束后会恢复。有关这些模式与普通运行的关系,请参阅运行代码和回测。


设置断点

  • 点击行号左侧的边栏可切换该行的断点;再次点击可移除。
  • 断点按文件保存,并在会话启动时从您所有打开的标签页中收集。
  • 边栏仅在没有任何运行时才可点击——请在开始运行之前设置断点。

启动会话

  • 您第一次启动调试会话时,会看到一次性的运行免责声明(下次可以跳过)。
  • Debug Run 需要打开一个文件。当活动标签页是定义了 IDE 可识别的策略回调(on_init / on_bar / on_finish)的 .py 文件时,会出现 Debug Test;它不需要有效的券商交易账户。B2 / QuantCraft 数据在需要时使用您的 QC 登录信息。
  • 回测引擎仍然要求有可调用的 on_tick(以及其他必需的回调)。如果缺少 on_tick,Debug Test 仍可能显示在工具栏中,但回测开始时运行会失败。
  • 同一时间只能运行一个调试会话,并且在普通 Run 或回测进行期间调试会被阻止。

控件

工具栏会根据会话状态显示相应的控件。

控件何时作用
Stop运行时结束调试会话。
Continue暂停时继续运行到下一个断点。
Step Over暂停时运行当前行,并停留在同一函数内。
Step Into暂停时进入当前行的函数调用。
Step Out暂停时运行直到当前函数返回。
Step Bar暂停时(仅 Debug Test)将回测推进一根 K 线。

没有 Restart —— 如需重新开始,请停止后再次点击 Debug Run / Debug Test。


暂停时您会看到什么

  • 编辑器会跳转到暂停的文件并高亮显示暂停的那一行。
  • 输出面板中会打开一个 Debug 子标签页,包含两个窗格:
    • Call Stack — 栈帧链,每个栈帧显示函数名和 文件:行。点击某个栈帧可检查其变量。
    • Variables — 按作用域(Locals、Globals、Closure 等)分组。每个变量显示其名称、类型和值;对象和列表可展开以查看其内容。
  • 在 Debug Test 中,步骤上下文横幅会显示您在回测中的位置,例如 Bar 12 / 240 · AAPL · <time> · O … H … L … C …。
  • 程序输出照常流式显示在输出面板中。

限制

  • 没有监视面板或表达式求值器——只有 Call Stack 和 Variables。
  • 没有 Restart 控件(停止后重新启动)。
  • Debug Test 仅支持单次回测——无法调试优化运行。
  • 不支持选股器标的来源 — Debug Test 会以 Debug test doesn't support a Screener symbol source … 停止。请切换到 Selected symbols 并选择几个股票代码。
  • Debug Test 要求活动标签页是带有回测回调的 .py 策略文件;普通脚本只能使用 Debug Run。
  • 工具栏中 Debug Test 的显示不会检查 on_tick;检查由引擎完成。

另请参阅

阅读约 1 分钟建议修改 ↗
调试 — 文档 (1.0 (latest)) | QuantCraft