有没有办法知道调用者没有在Chrome的调用堆栈中显示的JavaScript函数的调用方是谁?调用堆栈充满了对我无用的Angularjs函数调用。 Angular.js是Blackboxed,但对于没有触发的断点似乎很有用。
我可以通过对函数名称进行文本搜索并在所有调用者身上添加断点来查找调用者,但这可以解决问题。
还在调用堆栈中查找没有angularjs调用的方法。或者有办法记录所有电话吗?实际的函数调用者似乎已经从调用堆栈窗格滚动。
答案 0 :(得分:2)
如果您没有在调用堆栈中看到调用者,则可能意味着执行在不同的上下文中运行。勾选右侧的Async
选项以查看跨上下文调用堆栈。
有些电话可能会看到(anonymous)
。如果您使用匿名回调函数,这是非常典型的。如果你给它们命名,它会有更好的调试体验。例如:
function myFunc(cb) {
setTimeout(cb, 100);
}
myFunc(function myCallback() {
debugger;
})
我不知道Angular,但我已经读过堆栈跟踪很差,特别是$http
。有人建议使用Bluebird JS承诺,其中包含long stack traces选项。请参阅讨论here。
答案 1 :(得分:0)
我通常做的是:
一些个人exp通常我不知道事件角度触发了哪个函数,但我知道它使用某个名称或前缀或后缀调用.js文件。我运行配置文件并过滤掉.js,然后单击文件名链接,它将我重定向到Sources选项卡中的详细功能信息
有关个人资料的详细信息:https://developer.chrome.com/devtools/docs/profiles