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. 首位插桩,观察首位是否正确打印,一般此时尾部不会正常打印
    若首部也未正常打印,则可能是整个文件编码错误
    若首位都正常打印,则此代码在执行中没有发生问题

  2. 经过1的检查,如果只是尾部未正常打印
    将桩插到中间,若未打印,则错误在上面,
    若打印,则错误在下方

posted @   trykle  阅读(182)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示