CloseMaxscript 用户手册 错误调试 利用插桩调试定位错误位置
可能出现错误点汇总
根据用户的反馈进行的归纳
1.源代中存在
getThisScriptFileName getSourceFilenName getErrorSourceFileName
getSourcefileOffset getErrorSourceFileOffset getSourceFileLine getErrorSourceFileLine
等函数调用,本质是因为这些函数未获取到会返回undefined,开发者将undefined成字符串使用
如果有,尝试直接替换成固定的绝对路径来测试
2.Try Catch 屏蔽了错误,在Catch内将错误打印出来
如果有,把所有Catch全部加上print测试标记
如果以上测试均未搞定,可以尝试下面的100%可以定位错误位置的方法
插桩描述
这是我们的演示代码,在加密之后我们收到一个错误,这样的错误提示只会是执行源代码的过程中遇到错误的提示
由于在内存中执行,我们无法获取具体的错误内容,如果我们的代码有一万行,我们无法一眼看出错误
代码是一行一行解释执行的所以如果他在中间出错了,下面的就不会运行,也就是说上面的会运行!

操作步骤
首先确定源代码可以正常测试运行
定义一个全局唯一函数,方便后续替换
fn __test_print msg =
(
print ("DEBUG:" + msg as string)
)
将代码调用插入到首位

加密并运行,得到错误提示,我们注意到,END并没有打印出来,可以知道代码一定是在中间出现的问题

在中间进行插桩

得到错误,此时可知,出错的地方一定在 1和END之间,继续缩小,则可以定位具体位置

总结
-
首位插桩,观察首位是否正确打印,一般此时尾部不会正常打印
若首部也未正常打印,则可能是整个文件编码错误
若首尾都正常打印,则表明此代码在执行中没有发生问题 -
经过1的检查,如果只是尾部未正常打印
将桩插到中间,若未打印,则错误在上面,
若打印,则错误在下方,利用二分排除法可快速定位出错具体位置
浙公网安备 33010602011771号