在开发过程中,可能有这样的需求:即使在没有报错的情况,也需要查看该函数的堆栈调用信息。
对于这样的需求,我们可以使用JS原生的console.trace来实现。
具体代码:
export let TraceArr = [];
console.trace = function () {
var fun = arguments.callee;
let num = 0; //追踪的堆栈深度,可自行设置
do {
fun = fun.arguments.callee.caller;
if (fun && num != 0) {
TraceArr.push(fun.toString());
}
num++;
if (num >= 2 || !fun) {
TraceArr.push("\n--------------------------\n");
break;
}
} while (true);
}
但是,以上方法不能在原生环境(android,ios)中使用,会报以下的错误:
所以,CocosCreator应该使用其他的实现方式,这个方法简便:
export let TraceArr = [];
function saveStackTrace() {
TraceArr.push(+"-" + new Error().stack);
}