寻找行为不运行的原因(调试排错)
您创建了一个行为,但它尚且无法使用。在下文中,您将了解到如何排除错误。只有在当前行为在播放时才可进行排错。
逐一测试指令盒
要控制一个行为时,您可以点击“Play”,将行为加载到机器人上。 您可以双击一个输入或输出点来激活它。
在时间轴上屏蔽一层
通过每层旁边的小眼睛图案,您可以“屏蔽”该层。这样,在播放行为时就会忽略这一层。 当您调试行为时,这会很有用。
检查在机器人上运行的模块
进入机器人网页。网页上会列出在NAO上运行的模块。可通过点击模块名称来查看细节。
跟踪指令盒的执行情况
每当两个指令盒之间的链接被激活时,链接的颜色就会改变。 这是一个很好的检查执行情况的方法。
检查输出值
当一个指令盒有一个输出值时,最后的一个值显示在工具提示中。 这样,就可以很容易地检查执行情况是否正确。
了解为何指令盒变为红色
- 在执行时变为红色: 出现一个异常。原因可能是无法加载一个模块(如本地NAOqi)、模块不存在等。
- 在执行前变为红色(在点击Play按钮之后):指令盒编码有误。有可能是在Python脚本中出现输写错误。
在一个Python脚本中使用“self.logger”
“self.logger”是一个Python标准记录器,由Python的Logging模块创建。
日志信息可根据严重程度分类(在调试窗口中,每个程度都有其相关联的字体颜色):
- debug (调试,灰色)
- info (信息,黑色)
- warning (警告,橙色)
- error (错误,红色)
- critical (危急,紫色)
在您的Python脚本中,我们建议您添加“warning”、“error”与“critical”日志信息,以便在您设计的行为处于危险或错误状态时,收到相关报告。
您也可以使用“info”与“debug”来跟踪行为的执行流。
- 打开一个指令盒的脚本。
- 如下所示,在一个函数中添加“self.logger”一行:
def onLoad(self): self.logger.debug("Loaded box %s", self.getName())
- 在调试窗口中,选择您所需的最低信息严重程度。在本例中,选择的是“Debug”。
- 执行指令盒。
- 所有调试信息会出现在调试窗口中,您可以从中了解到所有执行情况。还会显示其它函数有可能出现的“debug”、“info”、“warning”、“error”和“critical”信息,这是因为选择的最低程度为“debug”。 如果您选择的是“error”,您就只能看到“error”和“critical”信息。