プログラミング“ど”素人の私にJavaScriptデバッグ方法をご伝授ください…!!
JavaScriptが動かないときのデバッグ方法を調べています。
およそ共通する方法としては下記の3つかと思います。
1.ブラウザのデベロッパーツール→コンソールを見る
2.console.logでログを出力
3.ブレイクポイントを設定
基本の基本がわかっていないため、1〜3の点と点が正しく関連付けて理解できてない、「これを調べるため」「これを解決するため」と理解して実行するのではなく、「こうするもんだ」と書いてあったからとりあえずやっている、という状態です。
1.コンソール
→問題が起きている箇所(行番号)と、エラーコードはわかる。
しかし、実際にどこをどう直したら解決するかまでに至らないときがある。
→またはコンソール上には何のエラーコードもでないが、とにかくうんともすんとも動かない時がある。
2.console.log
→そもそも何を呼び出すために行うのかがわからない。
コンソールのエラーにでた行にある関数、変数などを記入して、その中身を読みだすのでしょうか?
3.ブレイクポイント
→ブレイクポイントを設定し、実行してみたものの、いろんな参照先を行ったり来たりしているのを見ていても、どこに問題があるのかよくわからない。
問題がある場所で止まって、エラー表示などが出るのでしょうか?
また、上記の3つの方法は順番に実行すべきなのでしょうか。1で解決でなければ2、2で解決できなければ3、など。
あるいはそれぞれの目的が異なり、別個に行うのでしょうか。それすらもわからない状態です…
みんなの回答 5 件
console.log( ’test’ ); を動くはずのところに書いてみて、出力されなかったらそこまでがのどこかで処理が途絶えているということになるから、さらに処理を遡って書いてみて、どこから動いてないかを着き止める。
その時に、変数aの値がxだったら動くはず…みたいな条件があるなら、3.ブレイクポイントを設定して変数aにどういう値が入っているかを確認する。(これは、2.のconsole.logで出力してもいいから、そこで一旦処理を止めて確認したい時だけ3.を使う)
構文ミスじゃないなら、大体は、ifなどの条件の指定がおかしいか、渡される値が想定した状態になってないか、イベントが発火してないからのどれかだと思うから、if が正しく判定されているかif の中にconsole.logを書いて条件判定が正しいかを見たり、イベントが発火しているかを確認したりすれば直せる。
3.あちこちのソースに飛ばせない方法
ああ
https://developer.mozilla.org/ja/docs/Tools/Debugger/How_to/Black_box_a_source追記です。1のデベロッパーツール>コンソールについて
例えばChromeのコンソールに下記のような赤字エラーが表記された場合は
---------------------------------------------------------
「Uncaught TypeError: ○○」「aaa.js:18」
---------------------------------------------------------
この18行目を修正すれば解決するということでしょうか。
(クリックするとコードのその行に赤い×印が表示されます)
その下にも何行か「○○」「bbb.js:54」、「○○」「bbb.js:80」のような表記が続いていますが、そちらをクリックすると行の色が変わるのみで、エラー表記はないようです。これらの場所自体は修正しなくてもいいという理解でいいでしょうか。(先の「aaa.js:18」のエラーから影響を受けている部分を教えてくれている?)
明らかに動きそうな部分を残して他は削除する。
動かない部分のコードは別のファイルに対比させておく。
でconsole.log();いれてブラウザで実行してみる。
それでも動かないなら、さらに動きそうな部分を残して削除して~の繰り返しで動いていない場所を特定する。
トピ主は自分でコード書いてないだろ?拾ってきたコピペを組み合わせてるだけで自分の頭で考えてないだろ?それが本質的問題だよ。
コードの一字一句を「理解」しろよ。そして本当に意図通りに実行が進んでいるかを確認するためにツールを使う。
関連するトピックス