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的检查,如果只是尾部未正常打印
将桩插到中间,若未打印,则错误在上面,
若打印,则错误在下方
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步