追踪无限的摘要错误

时间:2014-01-24 01:29:15

标签: angularjs

我们最近部署了一个相当大的angularjs应用程序,它包括记录客户端浏览器中发生的错误的能力。自从我们两周前部署以来,我们似乎无法追踪正在发生的无限消化错误。

错误消息

[$rootScope:infdig] http://errors.angularjs.org/1.2.7/$rootScope/infdig?p0=10&p1=[["fn: function (){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 418; oldVal: 410","$index; newVal: 28; oldVal: 29","$index; newVal: 29; oldVal: 28","$index; newVal: 70; oldVal: 69","$index; newVal: 69; oldVal: 70","$index; newVal: 78; oldVal: 79","$index; newVal: 79; oldVal: 78","$index; newVal: 94; oldVal: 95","$index; newVal: 95; oldVal: 94"],["fn: function (){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 426; oldVal: 418","$index; newVal: 24; oldVal: 23","$index; newVal: 23; oldVal: 24","$index; newVal: 29; oldVal: 28","$index; newVal: 28; oldVal: 29","$index; newVal: 53; oldVal: 52","$index; newVal: 52; oldVal: 53","$index; newVal: 69; oldVal: 70","$index; newVal: 70; oldVal: 69"],["fn: function (){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 436; oldVal: 426","$index; newVal: 23; oldVal: 24","$index; newVal: 24; oldVal: 23","$index; newVal: 28; oldVal: 29","$index; newVal: 29; oldVal: 28","$index; newVal: 33; oldVal: 32","$index; newVal: 32; oldVal: 33","$index; newVal: 70; oldVal: 69","$index; newVal: 69; oldVal: 70","$index; newVal: 89; oldVal: 88","$index; newVal: 88; oldVal: 89"],["fn: function (){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 442; oldVal: 436","$index; newVal: 32; oldVal: 33","$index; newVal: 33; oldVal: 32","$index; newVal: 69; oldVal: 70","$index; newVal: 70; oldVal: 69","$index; newVal: 86; oldVal: 87","$index; newVal: 87; oldVal: 86"],["fn: function (){e=h(c);var a,b;if(X(e))if(qb(e))for(d!==\nm&&(d=m,l=d.length=0,f++),a=e.length,l!==a&&(f++,d.length=l=a),b=0;b<a;b++)d[b]!==e[b]&&(f++,d[b]=e[b]);else{d!==k&&(d=k={},l=0,f++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,d.hasOwnProperty(b)?d[b]!==e[b]&&(f++,d[b]=e[b]):(l++,d[b]=e[b],f++));if(l>a)for(b in f++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!==e&&(d=e,f++);return f}; newVal: 450; oldVal: 442","$index; newVal: 24; oldVal: 23","$index; newVal: 23; oldVal: 24","$index; newVal: 29; oldVal: 28","$index; newVal: 28; oldVal: 29","$index; newVal: 33; oldVal: 32","$index; newVal: 32; oldVal: 33","$index; newVal: 87; oldVal: 86","$index; newVal: 86; oldVal: 87"]]
     at ? line 6, column 449 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:6)
     at h.$digest line 101, column 152 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:101)
     at h.$apply line 103, column 100 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:103)
     at f line 67, column 98 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:67)
     at E line 71, column 117 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:71)
     at XMLHttpRequest.onreadystatechange line 72, column 167 (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js:72)

我们知道的事情

  • 我们正在使用带有ngRoutebootstrap-ui和许多其他自定义指令的angularjs 1.2.7。
  • 似乎只发生在Android 2.3.x(Gingerbread)和Kindle Fire(Silk浏览器)
  • 我们似乎无法在browserstack,模拟器或物理设备中重现此错误。
  • 似乎没有孤立到特定路线。

问题

是否有任何指导来跟踪此错误的原因? 使用源地图? 暂时使用unmagnified版本? 捕获角度内的其他内容?

2 个答案:

答案 0 :(得分:2)

尝试使用Spy-js进行javascript堆栈跟踪。您可以看到实际执行的调用堆栈及其花费的时间(查找滞后/超时):

https://github.com/spy-js/spy-js

http://spy-js.com/

它现在集成在WebStorm中,并支持angularJS。

http://blog.jetbrains.com/webstorm/2014/01/webstorm-8-eap/

我还建议在调试时不要使用任何缩小的JS。

答案 1 :(得分:0)

我有类似的问题 - 在更新到最新的AngularJS(截至目前为1.3.15)后消失了。