假设我有一个JavaScript程序,它对某个对象执行某些操作,并且我使用不同的对象运行两次。
当我使用Chrome开发者工具调试程序时,是否可以以某种方式自动比较/区分两次运行的堆栈跟踪?我的请求背后的想法是,如果我调试一个未知的程序,我想知道如何处理不同的对象,例如,程序中的哪一点检测到差异。
如果程序足够大,手动调试两次运行并尝试记住差异发生在哪里(编辑)会非常烦人。
答案 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);