简体中文
English 简体中文 繁體中文
Methodox 首页

运行和控制台

运行

单击工具栏上的 Run(运行),或按 F5 或 Ctrl+E。运行期间,该按钮显示为 Stop,单击 Stop 或按 Shift+F5 即可结束运行。运行属于它的文档:运行期间切换标签页不会中断运行,关闭文档则会结束运行。

运行的内容取决于图:

  • Flows 图运行其激活的节点及其依赖的所有内容,不运行其他节点。
  • Function 运行每个节点,从 Input 到 Output。
  • 在 Interpreted 模式下,如果当前显示的是 Routine、Events 图或状态机,Run 运行当前显示的图;其他情况下,运行文档的入口图,即大纲中标记为 entry 的图。
  • 在 Compiled 模式下,Run 始终运行入口图。

运行结束时,状态栏会显示运行情况,Properties 面板切换到 Run 视图:显示 Finished 或 Failed、耗时和所用模式、导致运行停止的问题,以及 Run log(即运行打印的内容)。运行从不更改文档;下一次运行从画布上的内容开始。

要在解释运行后以全尺寸查看某个节点的结果,请选中该节点并按 Alt+Enter,或右键单击它并选择 Open preview in window:结果会在单独的窗口中打开。运行之前没有可显示的内容,状态栏会显示 Run the graph first; there is nothing to preview yet.

两种运行模式

工具栏上的切换开关决定以两种方式中的哪一种运行文档。每个标签页都有自己的设置,文档打开时为 Interpreted;状态栏会在消息旁显示当前模式。将鼠标悬停在开关的任意一半上,可以看到用几行文字概括的区别。

Interpreted Compiled
运行方式 逐个节点遍历图 先将文档构建为程序,再运行该程序
速度 立即开始;处理繁重任务时较慢 构建需要片刻,之后运行快得多
Run 启动的内容 当前显示的 Routine、Events 图或状态机,否则为入口图 始终为入口图
画布上 每个已运行的节点都显示 done,有内容可显示时还会显示其结果的预览;失败的节点以红色轮廓标出 无:编译的程序只报告它打印和返回的内容
状态栏 4 nodes in 99 ms Ran compiled in 361 ms
控制台 每一行都注明打印它的节点 每一行都注明所属的运行
调试 断点、暂停和单步执行 相同,前提是运行中有可以停下的断点;请参阅调试
停止 在下一个节点或语句之前停止 如果运行中有可以停下的断点,则在下一条语句之前停止;否则程序无法中断,其结果在返回时被丢弃

构建过程中使用解释模式,每个节点都会显示它产生的结果;当运行负担较重时(长循环、大图像、大表格),或者需要检查程序在编辑器之外运行时的表现时,切换到编译模式。在编辑器之外,程序默认以编译方式运行(请参阅导出程序)。文档、其数据成员及初始值在两种模式下的行为相同。

编译运行后的第一个程序:开关处于 Compiled,节点下方没有结果,Run 视图显示 Finished 和 Compiled,控制台的第 7 行注明属于该次运行

激活的节点

在 Flows 图上,运行从标记为 Active 的节点开始,只运行它们需要的内容。选中一个节点并按 Space,可将其标记为激活或取消激活,也可以使用其 Properties 中的 Active 开关。画布上方的一行会统计它们(例如 1 active · 4 will run),运行不会涉及的节点会变暗。没有任何激活节点时,无论哪种模式,运行都会显示 Nothing ran (no active nodes)。

缓存的结果

较慢的节点(例如加载大文件或进行渲染的节点)可以在多次解释运行之间保留其结果。选中该节点并按 Shift+Space,或在其 Properties 中打开 Cache result:之后的运行会重用它产生的结果,跳过它及其之前的所有节点,直到它所依赖的内容发生变化。状态栏会统计重用的内容,例如 1 node in 5 ms · 10 reused。在解释运行之后立即打开此开关,会立即保留该次运行的结果。如果要特意重新计算(例如它读取的文件已更改),可将其关闭后再打开。

控制台

运行打印的内容(Print Line、Print 以及其他任何写出内容的节点)会输出到画布下方的控制台停靠栏。运行只是静默打印时,停靠栏保持关闭:状态栏会统计行数,计数旁的圆点表示有未读内容,画布上方还会出现一条简短提示。当运行写入标准错误、运行失败或等待你输入内容时,停靠栏会自动打开。

按 Ctrl+`,或单击状态栏中的行数,即可打开或关闭控制台。拖动其上边缘可以调整高度。

Console 标签页顶部从左到右依次为:

控件 作用
Follow 使最新的一行始终可见。
类别列表 显示 All(所有行),或只显示运行的 Output、Standard error 或 Run errors(导致运行停止的失败)。
Filter lines 只显示包含所输入内容的行。按 Esc 清空。
复制 复制当前显示的行,包括失败的完整详细信息。
清除 清空控制台,直到下一次运行。

每一行都带有打印时间和打印它的对象,前后各有一行,注明运行所属的文档和模式,以及运行结束的时间。控制台属于运行,而不是标签页:当另一个文档位于前台时,某个文档的运行暂停或结束,仍会显示其输出行。这些行可以选中,并用 Ctrl+C 复制。状态栏本身的消息也可以复制:单击它即可。

运行请求输入时

Read Line 之类的节点会等待一行文本。停靠栏会打开控制台,并在最后一行下方显示一个输入行,状态栏显示 Waiting for input。输入内容并按 Enter 发送。Shift+Enter 开始第二行,每一行依次响应一次读取。Ctrl+D 结束输入,Shift+F5 停止运行。

其他标签页

  • Locals 和 Call stack 显示暂停的运行所处的位置,请参阅调试。
  • Search(Ctrl+F)可在当前文档、已打开的文档或整个工作区中查找文档、图、节点(按标题、名称或值)、成员、注释和分组。
  • References 列出读取、设置或调用某个成员的每个节点:右键单击数据成员的节点,或 Get 或 Set 节点,然后选择 Find All References。
  • Terminal(Ctrl+Shift+`)是工作区文件夹中的命令行,请参阅窗口。