JavaScriptコードをデバッグするにはどうすればよいですか?[閉まっている]


113

問題のあるコードスニペットを見つけた場合、それをデバッグするにはどうすればよいですか?

回答:


78

Firebugは、この目的のための最も人気のあるツールの1つです。


8
リンクアップ:getfirebug.com
Annika Backstrom

7
私はfirebugが好きですが、webkitのインスペクタの頭の上にいるとは言いません。
ライアンフローレンス

2
Firebugはそれが出てきたときよりも前でしたが、最近出てきた他のツールを考えると、Firebugが最良のツールであるとは思えません。
ジェームズ

私はFirebugを見つけてから使用していますが、とても役に立ちます!console.debug、プロファイラー、インスペクター...
Julio Greff '12 / 06/20:

@NinaScholzこれで、すべてのブラウザにデフォルトでジェットパックが付属しています。
oneCoderToRuleThemAll 2017年

74

最近のすべてのブラウザには、なんらかの形式のJavaScriptデバッグアプリケーションが組み込まれています。これらの詳細については、関連するテクノロジーのWebページで説明します。JavaScriptのデバッグに関する私の個人的な好みはFirebugです、Firefoxのです。Firebugが他より優れていると言っているのではありません。それはあなたの個人的な好みに依存し、おそらくあなたはとにかくすべてのブラウザであなたのサイトをテストするべきです(私の個人的な最初の選択肢は常にFirebugです)。

Firebugを例にして、以下の高レベルのソリューションのいくつかを取り上げます

Firefox

Firefoxには独自のJavaScriptデバッグツールが付属していますが、Firebugアドオンをインストールすることをお勧めします。これは、便利な基本バージョンに基づいていくつかの追加機能を提供します。ここではFirebugについてのみ説明します。

Firebugをインストールすると、以下のようにアクセスできます。

まず、要素を右クリックすると、Firebugで要素を検査できます。

Firebugの要素の検査

これをクリックすると、ブラウザの下部にFirebugペインが開きます。

Firebugペイン

Firebugにはいくつかの機能がありますが、私たちが興味を持っているのはスクリプトタブです。スクリプトタブをクリックすると、次のウィンドウが開きます。

スクリプトタブ

明らかに、デバッグするにはreloadをクリックする必要があります:

sctiptタブのJavaScript

これで、追加することができますブレークポイントをあなたにブレークポイントを追加するJavaScriptコードの部分の左側に行をクリックすることで:

ブレークポイントを追加する

ブレークポイントに到達すると、以下のようになります。

ヒットしたブレークポイント

また、ウォッチ変数を追加し、一般的に最新のデバッグツールで期待されるすべてのことを実行できます。

変数を見る

Firebugで提供されるさまざまなオプションの詳細については、Firebug FAQを確認してください

クロム

Chromeには、組み込みのJavaScriptデバッグオプションもあります。これは、右クリック、要素の検査など、非常によく似た方法で機能します。見ていChromeデベロッパーツールを。Chrome のスタックトレースは通常、Firebugよりも優れています

インターネットエクスプローラ

.NETで開発しており、Web開発環境を使用してVisual Studioを使用している場合は、ブレークポイントなどを配置してJavaScriptコードを直接デバッグできます。JavaScriptコードは、C#またはVB.NETコードをデバッグしている場合とまったく同じように見えます。

これがない場合、Internet Explorerは上記のすべてのツールも提供します。面倒なことに、ChromeまたはFirefoxの要素機能を右クリックして検査する代わりに、F12キーを押して開発者ツールにアクセスします。この質問はほとんどのポイントをカバーしています。


... コピーと貼り付けのバッファーで準備ができているはずですよ?:)
Christian Ternus 2013年

7
@ChristianTernus、あなた自身の質問
リアム

3
申し訳ありませんが、同じ人から質問と回答があったことはまったくありませんでした。私はあなたが誰かがこの質問をするたびにあなたが入れたある種のJavascript Debug Copypastaを持っていると思いました
Christian Ternus 2013年

54
  • Internet Explorer 8(開発者ツール- F12)。それ以外はInternet Explorerで2番目の割合です
  • FirefoxおよびFirebug。ヒットF12して表示します。
  • Safari(メニューバーを表示、設定 -> 詳細 -> 現像メニューバーを表示
  • Google Chrome JavaScriptコンソール(F12または(Ctrl+ Shift+ J))。ほとんどのブラウザはSafariと同じですが、Safariの方がIMHOの方が優れています。
  • Opera(ツール -> 詳細設定 -> 開発者ツール

+1オペラjsデバッガーは、他のすべてのエラーメッセージよりも優れたエラーメッセージを表示します
ガブリエルソロモン

3
2009年にはSafariが2014年にChrome開発者ツールを除外した可能性がありますが、私はSafariを介してChromeでデバッグをいつでも行います。ChromeのデベロッパーツールとFirefoxのFirebugのは最高です...まだ使いにくいが、IE11の開発ツールは、3位(でおそらくです私見
scunliffe

29

JavaScriptコードには、JavaScriptコードをデバッグするためのデバッガキーワードがあります。デバッガを置く; JavaScriptコードのスニペット。その時点で、JavaScriptコードのデバッグが自動的に開始されます。

例えば:

これがあなたのtest.jsファイルだとしましょ

function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();
  • ブラウザーがデバッガーを有効にして開発者オプションでWebページを実行すると、ブラウザーはデバッガーから自動的にデバッグを開始します。ポイント。
  • ブラウザーで開発者ウィンドウを開く必要があります。

Safariでは、動作する場合と動作しない場合があります。それは私の終わりにいくつかのことだと確信しています。FWIW私はJSContextsの自動Webインスペクターを表示を有効にしました。
1.21ギガワット2018年

21

私は古い良いprintfアプローチ(いつでもうまくいく古代の技術)を使用しています。

魔法に見える%o

console.log("this is %o, event is %o, host is %s", this, e, location.host);

%oクリック可能で詳細に閲覧できる、見栄えよく印刷された JSオブジェクトのコンテンツをダンプします。%s記録のためだけに表示されました。

この:

console.log("%s", new Error().stack);

new Error()呼び出しポイント(ファイルへのパスと行番号を含む)までのJavaのようなスタックトレースを提供します !!)。

両方%onew Error().stack ChromeとFirefoxで利用できます。

このような強力なツールを使用すると、JSで問題が発生していることを想定し、デバッグ出力を配置します(ラップインを忘れないでください ifデータ量を減らすためステートメントをことを)、想定を確認します。問題を修正するか、新しい仮定を行うか、ビットの問題にデバッグ出力を追加します。

また、スタックトレースを使用する場合:

console.trace();

言うように コンソール

ハッキングハッピー!


2
console.trace();の場合は+1 他とは違う答え。
Saurabh Patil 2014年

12

FirebugとIEデバッガから始めます。

ただし、JavaScriptのデバッガには注意してください。たまに、デバッグしようとしているエラーのいくつかを引き起こすのに十分なだけ環境に影響を及ぼします。

例:

Internet Explorerの場合、それは一般に緩やかな減速であり、一種のメモリリークタイプの取り決めです。30分後、再起動する必要があります。かなり規則正しいようです。

Firebugの場合、おそらく1年以上経過しているため、古いバージョンであった可能性があります。その結果、具体的なことは覚えていませんが、基本的にコードは正しく実行されておらず、しばらくデバッグを試みた後、Firebugを無効にするとコードは正常に機能しました。


9

alert(msg);、それらの中に作品のシナリオ「私はちょうどに行くいただきました!を見つけたい」... あらゆる開発者が、あなたがから抜け出すことができない(非常に大きいまたは無限)ループで終わるような場合が発生しました。

開発中に非常に面倒なデバッグオプションが必要な場合は、ブレークアウトできるデバッグオプションを使用することを推奨します。(PS Opera、Safari?、Chrome?すべてのネイティブダイアログで利用可能です)

//global flag
_debug = true;
function debug(msg){
  if(_debug){
    if(!confirm(msg + '\n\nPress Cancel to stop debugging.')){
      _debug = false;
    }
  }
}

もし上記押すとポップアップデバッグの大きなループの中にあなたの自己を得ることができるとEnter/ Okあなたはそれぞれのメッセージを介してジャンプすることができますが、押しEscape/ Cancelあなたがうまく抜け出すことができます。


6

私はWebKitの開発者メニュー/コンソール(Safari 4)を使用しています。Firebugとほぼ同じです。

console.log()新しい黒です-よりはるかに優れていalert()ます。


2
コード全体にconsole.logを配置した場合は、IEが機能しなくなるため、必ず削除してください。
リアム

5

私の最初のステップは常にHTMLを検証し、JSLintで構文をチェックすることです。クリーンなマークアップと有効なJavaScriptコードがある場合は、Firebugまたは別のデバッガーの番です。


ケンリンクが壊れています:(
Thirisangu Ramanathan '27

@Thirisanguありがとうございます!リンクが修正されました
Ken

3

Visual Studio 2008には、非常に優れたJavaScriptデバッグツールがいくつかあります。クライアント側のJavaScriptコードにブレークポイントをドロップし、サーバー側のコードとまったく同じツールを使用してステップ実行できます。プロセスにアタッチしたり、それを有効にするために特別なことをしたりする必要はありません。


3

私はいくつかのツールを使用しています:Fiddler、Firebug、およびVisual Studio。Internet Explorer 8には優れた組み込みデバッガーがあると聞いています。


「Fiddler」とは、Fiddler Web Debuggerを意味しますか?
トーマスLホラディ

3

Internet Explorer 8が登場するまでは、以前はFirebugを使用していました。私はInternet Explorerの大ファンではありませんが、組み込みの開発者ツール(本当に優れたデバッガーが含まれています)で少し時間を費やした後、他のものを使用しても意味がないようです。私はMicrosoftに私の帽子を向ける必要があります。彼らはこのツールで素晴らしい仕事をしました。


2
基本的なデバッグについては、IE8デバッガーが私のニーズのほとんどに適しています。ただし、何らかのパフォーマンステストを実行している場合は、IEが不足していることにすぐに気付くでしょう。最近、重いJavaScriptを使用するプロジェクトがあり、恐ろしい「応答しないスクリプトエラー」に遭遇していたため、下位システムのために物事を削減する必要が本当にありました。Firebugは、私のインスタンスのすべてが費やされている場所を把握するためにconsole.profile()メソッドを実行できたため、このインスタンスでは非常に貴重でした。
ギャビン、

1
IE8デバッガーには、FireBugほどグラフィカルではありませんが、呼び出しツリー、呼び出し回数、各メソッドに費やされた時間を提供するプロファイル機能もあります。これは、どのJSコードが時間がかかりすぎているのかを特定するのに適切であると思いました。
ジェームズ

3

YUI Loggerもチェックしてみてください。それを使用するためにあなたがしなければならないすべてはあなたのHTMLにいくつかのタグを含めることです。これは、Firebugに役立つ追加機能であり、多かれ少なかれ必須です。


jQueryには同様の機能はありませんか?
shapr、2009年

2

新しいバージョンのInternet Explorer 8(プレスF12)は、JavaScriptコードのデバッグに非常に適していることがわかりました。

もちろん、Firefoxを使用している場合はFirebugが適しています。


2

Visual StudioのJavaScriptデバッガーを使用する以外に、ページに含める独自のシンプルなパネルを作成しました。Visual Studioのイミディエイトウィンドウに似ています。変数の値を変更したり、関数を呼び出したり、変数の値を確認したりできます。テキストフィールドに書かれたコードを評価するだけです。



2

FireBugとブラウザネイティブの開発者向け拡張機能に加えて、JetBrains WebStorm IDEには、FirefoxとChrome(拡張機能が必要)のリモートデバッグサポートが組み込まれています。

以下もサポートします:

これを無料でテストするオプションは、30トライアルまたは早期アクセスバージョンの使用です。



1

ほとんどの答えと同様に、それは本当に依存します:デバッグで何を達成しようとしていますか?基本的な開発、パフォーマンスの問題の修正?基本的な開発については、これまでの答えはすべて十分すぎるほどです。

特にパフォーマンステストについては、Firebugをお勧めします。時間の面で最も高価な方法をプロファイルできることは、私が取り組んできた多くのプロジェクトにとって非常に貴重です。クライアント側のライブラリがますます堅牢になり、一般にクライアント側の責任が増えるにつれ、このタイプのデバッグとプロファイリングがさらに役立つようになります。

FirebugコンソールAPI:http : //getfirebug.com/console.html


0

押して、F12 Web開発者をすぐにブラウザを離れることなく、JavaScriptコードをデバッグすることができます。Windowsのすべてのインストールに組み込まれています。

Internet Explorer 11F12ツールは、このようなブレークポイント、ウォッチとローカル変数の表示、およびメッセージと即時コード実行のためのコンソールとしてのデバッグツールを提供しています。


このリンクを参照してください: w3schools.com/js/js_debugging.asp
Reza
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.