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

Compare stack traces (Chrome Developer Tools)

假设我有一个 JavaScript 程序,它用一个对象做一些事情,我 运行 两次,用不同的对象。

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

如果程序足够大,手动调试两个 运行 并尝试记住差异发生的位置(编辑)可能会很烦人。

您需要指定应输出调用堆栈的执行点。如果两条路径都以同一个函数结尾,您可以在最后一个路径中调用 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);