251

Google ChromeデバッガーでJavaScriptコードをステップ実行するときに、続行したくない場合、スクリプトの実行を終了するにはどうすればよいですか?私が見つけた唯一の方法は、ブラウザウィンドウを閉じることです。

[このページを再読み込み]を押すと、残りのコードが実行され、F8[続行]を押すかのようにフォームが送信されます。

更新

スクリプトが一時停止しているときにF5(更新)を押すと、次のようになります。

  • Google Chrome(v22)がスクリプトを実行します。スクリプトがHTTPリクエストを送信すると、そのリクエストのHTTPレスポンスが表示されます。元のページは更新されません。
  • IE9がフリーズします。ただし、IEには「デバッグの停止」オプションがあり、これを押すと(以前にF5を押さなかった場合)、デバッガーの外部でスクリプトを実行し続けます。
  • FirebugはChromeと同じように動作します。

ブラウザウィンドウを閉じてから再度開くことは、ブラウザセッションの状態を強制終了するため、常に次に簡単な方法とは限りません。これは重要な場合があります。すべてのブレークポイントも失われます。

更新(2014年1月)

デバッグ中の更新:

  • Chrome v31:スクリプトを実行し、それ以降のブレークポイントで停止し(ただし、ajaxリクエストは送信しません)、更新します。
  • IE 11:更新は何もしませんが、F5キーを押して続行できます。
  • Firefox v26:スクリプトを実行できるようにしますが、それ以上のブレークポイントで停止せず、ajaxリクエストを送信してから、更新します。

進歩のようなものです!

デバッグ中に同じページに移動します。

  • Chrome v31:更新と同じ。
  • IE 11:スクリプトが終了し、新しいブラウザセッションが開始されます(閉じて再び開くのと同じです)。
  • Firefox v26:何も起こりません。

また、 juacalaは効果的な回避策を提案しました。たとえば、jQueryを使用している場合、コンソールからdelete $を実行すると、jQueryメソッドが検出されると実行が停止します。上記のすべてのブラウザでテストし、機能していることを確認できます。

更新(2015年3月)

最後に、2年以上とほぼ1万回の視聴の後、Alexander Kが正解を示しました。GoogleChromeには、タブ自体を閉じにタブプロセスを強制終了し、すべてのブレークポイントやその他のものをそのまま維持できる独自のタスクマネージャーがあります。

私はBrowserStack.comまでChromev22でテストしましたが、そのときでもこれがこのように機能していることがわかりました。

Juacalaの回避策は、IEまたはFirefoxでデバッグする場合でも役立ちます。

更新(2019年1月)

Chrome Dev Toolsはついに、スクリプトの実行を停止する適切な方法を追加しました。これは便利です(少し隠されていますが)。詳細については、JamesGentesの回答を参照してください。

4

11 に答える 11

202

ShiftChromeには、 +ESCまたは経由でアクセスできる「タスクマネージャー」があります

メニュー→その他のツール→タスクマネージャー

「プロセスの終了」ボタンを押すと、ページタスクを選択して終了できます。

于 2014-12-03T01:11:05.513 に答える
137

2018年4月の時点で、Chromeで無限ループを停止できます

  1. 開発ツールで[ソース]パネルを開きます( Ctrl+ Shift+ I**)。
  2. [一時停止]ボタンをクリックして、スクリプトの実行を一時停止します。

ショートカットキーにも注意してください:F8およびCtrl+\

ここに画像の説明を入力してください

于 2018-08-11T17:51:03.887 に答える
69

2020年4月の更新

Chrome 80の時点では、現在の回答はどれも機能しません。表示される「一時停止」ボタンはありません。停止アイコンにアクセスするには、「再生」ボタンを長押しする必要があります。

ChromeDevToolsでスクリプトの実行を停止します

于 2020-03-31T13:14:57.470 に答える
38

これを行う1つの方法は、スクリプトを一時停止し、現在停止している場所に続くコードを確認することです。例:

var something = somethingElse.blah;

コンソールで、次の手順を実行します。

delete somethingElse;

次に、スクリプトを再生します。アクセスしようとすると致命的なエラーが発生しsomethingElse、スクリプトは終了します。出来上がり、スクリプトを終了しました。

編集:元々、私は変数を削除しました。それだけでは十分ではありません。JavaScriptがプロパティにアクセスしようとする関数またはオブジェクトを削除する必要があります。

于 2013-12-31T18:26:43.077 に答える
6

debuggerステートメントの使用中にこれが発生した場合は、

debugger;

...その後、jsランタイムが終了するか、次のブレークが発生するまで、ページは永久に実行され続けると思います。エラー時の中断モード(一時停止アイコンの切り替え)を使用している場合、代わりに次のような操作を行うことで、中断が確実に発生するようにすることができます。

debugger;throw 1;

または、存在しない関数を呼び出すこともできます。

debugger;z();

(もちろん、関数をステップスルーしようとしている場合、これは役に立ちませんが、ソースパネルに動的に追加しthrow 1たりz()、保存するにはctrl-Sを追加したり、更新するにはctrl-Rを追加したりできます...これただし、1つのブレークポイントをスキップする場合がありますが、ループしている場合は機能する可能性があります。)

ループを実行していて、ステートメントを再度トリガーする予定の場合は、代わりにdebugger入力するだけで済みます。throw 1

throw 1;

次に、ctrl-Rを押すと、次のスローがヒットし、ページが更新されます。

(2017年4月頃にChrome v38でテスト済み)

于 2017-04-17T20:46:09.027 に答える
5

@scottndeckerが次の質問に対して行った回答を参照すると、chromeは開発ツールの下に「JavaScriptを無効にする」オプションを提供するようになりました。

  • ...右上の垂直(Chromeメインメニューではなく、開発ツールメニュー内)
  • 設定(新しいChromeバージョンでは、ボタンの下ではなく、ボタンの横に歯車として個別に表示され...ます)
  • そして、[設定]の下の一番下にある[デバッガー]セクションに移動し、[JavaScriptを無効にする]を選択します

良い点は、チェック/チェックを外すだけで停止して再実行できることです。

于 2017-05-30T09:15:52.007 に答える
3

ここで良い質問です。スクリプトの実行を終了することはできないと思います。私はそれを探したことがありませんが、仕事でかなり長い間クロムデバッガーを使用しています。私は通常、JavaScriptコードにブレークポイントを設定してから、関心のあるコードの部分をデバッグします。そのコードのデバッグが終了したら、通常、プログラムの残りの部分を実行するか、ブラウザーを更新します。

スクリプトの残りの部分が実行されないようにしたい場合(たとえば、AJAX呼び出しが行われるため)、コンソールでそのコードをオンザフライで削除して、それらの呼び出しを防ぐことができます。実行されないようにすると、残りのコードを問題なく実行できます。

これがお役に立てば幸いです。

PS:次のようないくつかのチュートリアル/ガイドで実行を終了するためのオプションを見つけようとしましたが、見つかりませんでした。前に言ったように、おそらくそのようなオプションはありません。

http://www.codeproject.com/Articles/273129/Beginner-Guide-to-Page-and-Script-Debugging-with-C

http://www.nsbasic.com/app/tutorials/TT10.htm

于 2012-10-30T08:08:20.487 に答える
2

この種のシナリオのデバッグ中に非常に役立つと思われるXHRパターンで一時停止できます。

たとえば、「/」を含むURLパターンにブレークポイントを設定しました

ここに画像の説明を入力してください

于 2017-10-02T17:54:47.590 に答える
0

不正なループがある場合は、Google Chromeデバッガーでコードを一時停止します(||[ソース]タブにある小さな["]ボタン)。

Chrome自体に戻り、[タスクマネージャー](Shift+ ESC)を開き、タブを選択して、[プロセスの終了]ボタンをクリックします。

Aww Snapメッセージが表示されたら、リロードできます(F5)。

他の人が指摘しているように、一時停止の時点でページをリロードすることは、不正なループを再開することと同じであり、デバッガーもロックすると(場合によってはChromeまたはPCの再起動につながる)、厄介なロックアップを引き起こす可能性があります。デバッガーには「停止」ボタンが必要です。Nb:受け入れられた答えは、そのいくつかの側面が明らかに間違っているという点で時代遅れです。あなたが私に反対票を投じた場合、plsは説明します:)

于 2017-11-10T16:26:54.727 に答える
-1

[開発者ツール]で[ソース]タブを開き、実行中のスクリプトの行番号をクリックします。これによりブレークポイントが作成され、デバッガーがそこでブレークします。

于 2016-05-11T02:28:53.160 に答える
-1

この投稿で前述したように、この問題には多くの適切な解決策がありますが、スクリプトに挿入したり、Chromeコンソール(デバッガー)に貼り付けたりして、それを実現できる小さなハックを見つけました。

jQuery(window).keydown(function(e) { if (e.keyCode == 123) debugger; });

これにより、を押したときに実行が一時停止しますF12

于 2019-04-20T08:32:42.077 に答える