比如A函数调用B函数,我想知道B函数由谁调用,这种回溯有办法知道吗
获取堆栈
1.在b函数中调用console.trace()
2.在b函数中调用debugger;
3.在chrome调试中,在相应代码行打断点
4.???
大神 这个是怎么做的
去github找一个souremap support,然后new一个error就有堆栈了
public static isTrace:boolean=false;
public static Log(message?: any, ...optionalParams: any[])
{
if(this.isTrace)
{
console.groupCollapsed(message);
console.trace(message,optionalParams);
console.groupEnd();
}
else
{
console.log(message,optionalParams)
}
}
console.trace(message);才是重点。
这两句
console.groupCollapsed(message);
console.groupEnd();
只是给那个堆栈折叠起来。可以看到这个方法都是经过哪里到哪里调用的
function fromA() {
c();
}
function fromB() {
c();
}
function c() {
let f = c;
let path = [c.name];
while (f.caller) {
path.unshift(f.caller.name);
f = f.caller;
}
path.unshift('global');
console.log("调用链:", path.join("->"));
}
function secondary() {
fromA();
}
fromA(); // 调用链: global->fromA->c
fromB(); // 调用链: global->fromB->c
secondary(); // 调用链: global->secondary->fromA->c