调试模式

翻译自原文档:https://osdn.net/projects/emuera/wiki/debug

调试模式是1.750版中增加的模式。

这个功能与 "使用调试命令 "选项无关。

在调试模式下启动Emuera

要在调试模式下启动Emuera,请将-Debug作为命令行参数。

传递命令行参数的一个简单方法是:

右键点击EmueraXXXX.exe,选择 "创建快捷方式"。

在创建的快捷方式上点击右键,选择 "属性"。

在属性中,在 "链接到"字符串的末尾添加-Debug

(如果链接是用""括起来的,比如 "C:~~\EmueraXXX.exe",在""后面加上-Debug

双击该快捷方式,在调试模式下启动它。

在调试模式下的操作

当你在调试模式下启动时,会自动创建一个名为debug的文件夹。

变量观察列表和调试控制台日志,如下所述,都保存在调试文件夹中。

当处于调试模式时,除了正常执行的行之外,以;#;开头的行和[IF_DEBUG][ENDIF]之间的行也会被执行。

当不在调试模式时,这些行被当作注释,不被执行。

相反,当处于调试模式时,[IF_NDEBUG][ENDIF]之间的行被视为注释,不被执行。

;#;PRINTL 这一行只在调试模式下执行。
[IF_DEBUG]
  PRINTL 这一行只在调试模式下执行。
[ENDIF]
[IF_NDEBUG]
  PRINTL 这一行只有在非调试模式下才会执行。
[ENDIF]

此外,还有一些指令只在调试模式下发挥作用。

DebugPrintDebugPrintFormDebugPrintLDebugPrintFormL指令的功能与Print语句相同,只是输出到调试窗口。

如果参数为零,Assert指令就会产生错误。 如果参数为非零,它就不做任何事情。

DebugClear指令清除调试窗口的所有字符。没有参数。

这些指令在非调试模式下没有任何作用。

它也不解析参数,所以如果有问题,比如一个错误的DebugPrintForm,在非调试模式下什么也不会发生。

它们被视为无用的指令,而不是注释行,所以它们在SIF语句之后立即使用是安全的。

此外,变量__FILE____LINE____FUNCTION__只在调试模式下返回有意义的值。

在非调试模式下,它们返回0或一个空字符串。

调试窗口

当处于调试模式时,你可以通过从菜单中选择调试或在控制台中输入@DEBUG来打开调试窗口。

你也可以在主控制台使用快捷键Ctrl+D来打开调试窗口。

根据配置选项,调试窗口将在启动时自动打开。

调试窗口的大小是可变的。 请根据使用情况改变尺寸。

调试窗口的初始尺寸和位置可以从设置对话框的“调试”部分改变。

当前的尺寸和位置可以在调试窗口打开的情况下通过打开设置对话框获得。

调试窗口中显示的信息可以在调试窗口的不同标签之间进行切换。

当调试窗口获得焦点或切换标签时,这些信息就会被更新。

也可以通过使用Ctrl+R快捷键从主控制台刷新信息,或者使用DEBUGCLEAR指令清除所有字符。

变量监视

在标有目标一栏的底部点击。你将进入编辑模式。

输入你想知道的变量名称,如TALENT:MASTER:2NAME:TARGET,其数值将显示在数值部分。

如果在检索数值时发生错误,将显示错误的细节。

如果你想删除目标,请编辑目标并使其成为一个空字符串。

当变量表被更新时,该行将被删除。

添加到变量表的目标在调试窗口关闭时被保存,在打开时被加载。

如果你想在其他时间保存和加载,请使用菜单文件来保存和加载。

你可以使用常量和表达式以及变量作为目标,但在表达式中调用函数时要小心。

变量表每次更新其值时实际上都会调用表达式中的函数。

如果被调用的表达式函数有副作用,比如改变其他变量,那么每次更新变量表时都会出现副作用。

堆栈追踪

这是关于被调用的函数的信息。

最上面的是当前函数,接着是调用当前函数的函数,然后是调用该函数的函数,以此类推。

控制台

一个用于调试的控制台。

它是DebugPrintDebugPrintForm的输出目的地。

任何输出到主控制台的信息,如错误或警告,也会输出到调试控制台。

控制台底部的文本框允许你输入调试命令。

与主控制台中的调试命令不同,你不需要在它们前面加上@

即使在使用调试命令选项为NO时,该功能也是可用的。

同时,MASTER的名字也不会被改变。【?】