比较堆栈跟踪(Chrome开发者工具)

时间:2016-06-29 08:25:46

标签: javascript google-chrome debugging google-chrome-devtools stack-trace

假设我有一个JavaScript程序,它对某个对象执行某些操作,并且我使用不同的对象运行两次。

当我使用Chrome开发者工具调试程序时,是否可以以某种方式自动比较/区分两次运行的堆栈跟踪?我的请求背后的想法是,如果我调试一个未知的程序,我想知道如何处理不同的对象,例如,程序中的哪一点检测到差异。

如果程序足够大,手动调试两次运行并尝试记住差异发生在哪里(编辑)会非常烦人。

1 个答案:

答案 0 :(得分:4)

您需要指定执行中应该输出调用堆栈的点。如果两个路径都以相同的功能结束,您可以在最后一个路径中放置一个console.trace()呼叫,您将在控制台中获得两个路径的堆栈输出。

示例:

var objA = { type: "a", val: 1 };
var objB = { type: "b", val: 2 };

function doSomething() {
    console.log("do something");
    doFinalThing(); 
}

function doSomethingElse() {
    console.log("do something else");
    doFinalThing();
}

function doFinalThing() {
    console.trace();
}

function init(obj) {
    if (obj.type == "a") { 
        doSomething();
    } else { 
        doSomethingElse();
    }
}

init(objA);
init(objB);

enter image description here