ChromeのコードからJavaScriptブレークポイントを設定する方法


686

コードを介して、またはのようなコメントタグを使用して、Chromeデバッガーに強制的に改行させたいと思いますconsole.break()


46
debugger;開発者ツールバーの通常のブレークポイントを試したり、使用したりしましたか?
diaho

開発者ツールのスクリプトウォッチャーを使用して設定するのではなく、コード自体からブレークポイントを設定することを意味しますか?
Faris M


9
重複ではありません。「Chrome内」と「コード内」は2つの異なるものであり、この質問は多くの非XHRシナリオに当てはまります。はい他の質問の回答の1つがこの質問に回答しますが、その他は該当しません。私は文字通り「コードクロムからjavascriptブレークポイントを設定する」とググっていました。これが最初の結果であり、他の質問は最初のページにもありません。
AaronLS

回答:


1158

debugger;コード内で使用できます。開発者コンソールが開いている場合、実行は中断します。Firebugでも動作します。


8
:素敵なトリックは、数秒後にデバッガを起動するためにあるsetTimeout(function(){debugger;}, 3000);
シャハル

30
タイマートリックは一般的な方法ですか?検証/正当化?
Justus Eapen 14

4
これは非常に役立ちます。注debugger;は、すべての主要なブラウザでもサポートされています。詳細:w3schools.com/jsref/jsref_debugger.asp
ScottyG

16
@ScottyG MDNは、あまり光沢より有用である:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
jpaugh

@JustusEapen問題は、JavaScriptがシングルスレッドであるため、実行中のコードを中断できないことです。
Vitruvius

27

ボタンクリックリスナーを設定し、 debugger;

$("#myBtn").click(function() {
 debugger;   
});

デモ

http://jsfiddle.net/hBCH5/

JavaScriptでのデバッグに関するリソース


1
そのセットクリックハンドラでブレークポイント、おそらくないOPが望ん
ᆼ ᆺ ᆼ

@PeterVデバッグしているコードのブロックに近い場所にコードを開こうとした場合に便利ですが、常にデバッグする必要はありませんでしたが、そうです。 、デバッガを開くだけの場合は、そのためのキー操作があります。
Armstrongest、

27

を使用してdebug(function)functionが呼び出されたときに中断することもできます。

コマンドラインAPIリファレンス:デバッグ


2
とてもいいです-現時点ではChromeのようですが、それはとにかく私の主要なプラットフォームです。今、私はちょうど...私のグローバルなデバッグフラグ「デバッグ」を呼び出しを停止することを忘れないする必要があります
brichins

ChromeデバッガコマンドラインAPIリファレンスには、実際には気付かなかった他の非常に役立つことがいくつか含まれています。ありがとう!
Peter T.


8

[スクリプト]タブで、コードがある場所に移動します。行番号の左側でクリックします。これにより、ブレークポイントが設定されます。

スクリーンショット:

Chromeのブレークポイントのスクリーンショット

次に、スクリーンショットに示すように、右側のタブ内でブレークポイントを追跡できます。


41
これは質問の答えにはなりません。彼はコードで
robertc

39
xn .:「これは、投票が0票の小さな赤ちゃんだったときの私の回答の写真です。すべて成長しました。」
AaronLS

3
Ajax呼び出しでJSスクリプトをロードする場合、ここには表示されないため、コードにブレークポイントが必要です。
ペトルザ2014年

@FlorianMargaine、[スクリプト]タブはなくなりました。画像を更新してください。
Pacerier 2015年

Drupalなどの一部のフレームワークでは、JSはキャッシュを無効にするクエリ文字列のサフィックスを追加します。キャッシュをフラッシュすると、このサフィックスが頻繁に更新され、前のロードで設定したブレークポイントがすべて消去される可能性があります。
Nick

7

debugger EcmaScriptによって予約されているキーワードで、ES5以降のオプションのセマンティクスが指定されています

その結果、それはChromeではないだけに使用するだけでなく、FirefoxとのNode.jsすることができます経由node debug myscript.js

標準氏は述べています

構文

DebuggerStatement :
    debugger ;

意味論

DebuggerStatementプロダクションを評価すると、デバッガーで実行したときに実装がブレークポイントを引き起こす可能性があります。デバッガーが存在しないかアクティブでない場合、このステートメントは目に見える影響を及ぼしません。

プロダクションDebuggerStatement:デバッガー 次のように評価されます。

  1. 実装定義のデバッグ機能が利用可能で有効になっている場合、
    1. 実装定義のデバッグアクションを実行します。
    2. 結果を実装定義の完了値とします。
  2. そうしないと
    1. 結果を(通常、空、空)にします。
  3. 結果を返します。

ES6に変更はありません。


3

それは可能であり、あなたがこれをしたいと思うかもしれない多くの理由があります。たとえば、ページの読み込みの開始近くでJavaScriptの無限ループをデバッグすると、Chrome開発ツールセット(またはFirebug)が正しく読み込まれなくなります。

のセクション2を参照

http://www.laurencegellert.com/2012/05/the-three-ways-of-setting-breakpoints-in-javascript/

または、必要なテストポイントでコードにデバッガという単語を含む行を追加します。


3

ブレークポイント:-

ブレークポイントは実行を停止し、JavaScriptの値を調べることができます。

値を調べたら、コードの実行を再開できます(通常は再生ボタンを使用)。

デバッガー:-

デバッガ; JavaScriptの実行を停止し、デバッグ関数を呼び出します。

デバッガステートメントは実行を一時停止しますが、ファイルを閉じたり、変数をクリアしたりすることはありません。

Example:-
function checkBuggyStuff() {
  debugger; // do buggy stuff to examine.
};


2

JavaScriptコードをデバッグするには多くの方法があります。次の2つのアプローチは、コードを介してJavaScriptをデバッグするために広く使用されています

  1. を使用console.log()して、ブラウザコンソールに値を出力します。(これは、コードの特定のポイントでの値を理解するのに役立ちます)

  2. デバッガキーワード。debugger;デバッグする場所に追加して、ブラウザーの開発者コンソールを開き、[ソース]タブに移動します。

JavaScriptコードをデバッグするその他のツールと方法については、このリンクでW3Schoolから提供されています


1
1、通常のファイル/行番号は、メッセージの横に示されている、とあなたは、デバッガ、セットブレークポイントなどでコードを開くためにそれをクリックすることができますので、にconsole.logを使用すると、また、あなたのコードを見つけることが有益である
ジョン・ヘンケル

0

debugger;JavaScriptコードをdebugger;一時的に停止して永続的に停止しないため、JavaScriptコードを強制終了して停止するだけの場合はお勧めしません。

コマンドでjavascriptコードを適切に強制終了および停止する場合は、以下を使用します。

throw new Error("This error message appears because I placed it");

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.