如何在 Emberjs / js 中有效地调试调用堆栈超出异常或“仅偶尔发生且看似随机的异常”?在过去的一年学习 JavaScript 中,我开发了一堆调试策略,但调用堆栈超过一个特别烦人。
调试策略
- 阅读 Emberjs 源代码。不要在开发过程中使用缩小的 Emberjs 库,正常的包含断言语句,帮助您发现错误。了解某事是如何运作的有很大帮助。
console.log(this/variable)
现在您可以查看有关您正在使用的对象的详细信息,并查看其中可用的内容。地方
debugger
陈述- 更新到最新的 emberjs。
- 观看调试 emberjs
- 在编码时使用 jslint,以避免常见的陷阱
- 从错误中吸取教训并重构代码,以免再次发生相同类型的错误。
放在
var
所有变量之前,以防止它们成为全局变量并避免很难调试的名称冲突。学习分析调用堆栈。
学习在出错时将浏览器调试器置于中断状态。您可以通过将 JavaScript 控制台中的中断按钮设置为紫色来做到这一点。
使用
ObserveBefore()
in 与 debugger 语句组合来查看绑定 get 的设置时间,以便您可以获得有用的调用堆栈。window.billy 条件设置调试器语句。例子
someView = Em.View.extend({ buggyMethod : function(arguments){ //only if window.billy is set the debugger is activated. //usefull when method is used a lot and only fails sometimes. if ( window.billy ) { debugger; } ..more code.. }) })
View 实例有问题?要在控制台中获取视图实例:在视图元素的 dom 树中查找 id:在
<div id="ember667" class="ember-view" >
控制台中循环视图实例Em.view.views[found_id]
当我遇到一些没有提供任何关于为什么我的应用程序崩溃的上下文的错误时,我会禁用越来越多的应用程序,直到我缩小错误代码的范围。
使用正确的编码风格、风格指南和好名字来避免错误。
避免长函数并将它们分解。
在车把模板中找出为什么你的东西没有被打印出来。
- {{ 日志变量 }}
- {{ 调试器 }}