Emberjs / jsでコールスタックを超えた例外を効果的にデバッグする方法、または「時々発生し、一見ランダムな例外のみが発生する」ようにするにはどうすればよいですか? 私は過去 1 年間、JavaScript を学習してデバッグ戦術をたくさん開発しましたが、コールスタックが 1 つを超えたことは特に厄介です。
デバッグ戦術
- Emberjs のソースを読んでください。開発中に縮小された Emberjs ライブラリを使用しないでください。通常のライブラリには、エラーを見つけるのに役立つ assert ステートメントが含まれています。何かがどのように機能するかを知ることは、大いに役立ちます。
console.log(this/variable)
これで、使用しているオブジェクトの詳細を確認し、それらで利用できるものを確認できます。debugger
ステートメントを配置する- 最新の emberjs に更新します。
- emberjsのデバッグを見る
- コーディング中にjslintを使用して、一般的な落とし穴を回避します
- 間違いから学び、コードをリファクタリングして、同じタイプのエラーが再び発生しないようにします。
すべての変数の前に配置
var
して、それらがグローバルになるのを防ぎ、デバッグが非常に難しい名前の衝突を回避します。コールスタックを分析することを学びます。
エラー時にブラウザー デバッガーを中断する方法を学びます。これを行うには、JavaScript コンソールのブレーク ボタンを紫色にします。
ObserveBefore()
デバッガーステートメントと組み合わせて使用して、バインディングがいつ設定されるかを確認し、有用なコールスタックを取得できるようにします。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]
アプリがクラッシュする理由についてのコンテキストを提供しないエラーに遭遇すると、バグのあるコードを絞り込むまで、アプリの多くの部分を無効にします。
適切なコーディング スタイル、スタイル ガイド、適切な名前でバグを回避します。
長い関数は避け、分割してください。
ハンドルバーのテンプレートで、あなたのものが印刷されない理由を理解してください。
- {{ ログ変数 }}
- {{デバッガ}}