JavaScript:すべてのエラーでChromeを中断させる方法はありますか?


258

Chromeで、Firebugの「すべてのエラーで中断」機能に相当するものを探しています。[スクリプト]タブでは、Chromeに「すべての例外で一時停止」がありますが、これはすべてのエラーで中断することとはまったく異なります。

たとえば、次のコードを含むページを読み込む場合、Chromeで改行させたいと思いfoo.bar = 42ます。代わりに、「すべての例外で一時停止」を有効にしても、期待した結果が得られません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">

            function doError() {
                foo.bar = 42;
            }

            window.onload = function() {
                try {
                    doError();
                } catch (e) {
                    console.log("Error", e);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

このページに上記で貼り付けたコードを試すか、このjsFiddleを使用できます。


他にどのような種類のエラーを考えていますか?
Matthew Crumley、2010

1
エラー:たとえば、未定義の変数への参照(などconsole.log(gaga))または未定義のプロパティへの参照(などwindow.foo.bar)。
avernet

2
それらは例外をスローするはずです。「例外で一時停止」オプションは私にとってはうまくいきます。機能しないと考えられる唯一のエラーは構文エラーですが、コードが実行される前に発生します。
Matthew Crumley、2010

1
はい、私は今これを試しています、そしてそれはエラーがどこにあるかを壊すようです。私はこれを数日前に行いましたが、コード内のエラーの場所を壊すのではなく、エラーによって引き起こされた例外がスタックの途中でキャッチされている場所を壊していました。ゴーゴー!
avernet、2010

回答:


210

編集:私が回答した元のリンクは無効になりました。新しいURLは、https: //developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions となります(2016年11月11日現在)。

この質問には答えがあるのに気づきましたが、正確ではありません。上のリンクを使用してください^


(リンクは上記の編集で置き換えられました)-すべての例外または未処理の例外で中断するように設定できるようになりました。(ボタンを表示するには、「ソース」タブにいる必要があることに注意してください。)

Chromeには、DOMの変更やネットワークイベントの中断など、他の本当に便利なブレークポイント機能も追加されています。

通常は質問には答えませんが、同じ質問を自分でしていて、今は間違った答えを見つけたので、後で検索に来た人のためにこの情報をここに入れておこうと思いました。:)


1
ブライアン、ありがとうございます。実際に機能しています。この機能は、私がこれを投稿した昨年の2月に既に利用可能でしたが、正常に機能しているようですが、正常に機能していませんでした。フィードバックをお寄せいただきありがとうございます。
avernet、2011年

リンクで参照されているボタンがなくなったようです(少なくとも現在の開発チャネルのChromeリリースでは)。これをもう一度行う方法がわかりません。
Andrey Fedorov

2
こんにちはアンドレイ、私はChrome Canaryを見ていて、まだそこにボタンが表示されています。d.pr/i/DHwTに示すように、左から4番目のボタンです。1回クリックすると、すべての例外で一時停止になり、2回目のクリックで、キャッチされなかった例外で一時停止になります。3回目のクリックで、一時停止しないというデフォルトに戻ります。
ブライアンアーノルドシンクレア

リンクが壊れています。恐れ入ります:(
Rick

1
コメントが早く表示されなかったことをお詫びします。と思われるdevelopers.google.com/web/tools/chrome-devtools/javascript/...は前からコンテンツの主旨を持っています。可能であれば、元の回答も修正します。
ブライアンアーノルドシンクレア

298

私はそれを取得するのに苦労したので、さまざまなオプションを示す写真を投稿します。

Chrome 75.0.3770.142 [2018年7月29日]

少なくともChrome 38.0.2125.111から非常によく似たUI [2014年12月11日]

タブSources

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

ボタンがアクティブになるPause On Caught Exceptionsと、以下のチェックボックスを使用できます。 ここに画像の説明を入力してください


以前のバージョン

Chrome 32.0.1700.102 [2014年2月3日]

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

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

Chrome 27.0.1453.93安定

デバッグオプション


22
私は彼らのドキュメントでこれに直接リンクするためにFacebookを賞賛しなければなりません。+1
jimm101

1
また、注意してほしいのは、サイドバーが展開されていない場合はボタンが非表示になるだけで、サイドバーがそこにあることを示すものではありません。
Eric Majerus

17

これは、「すべての例外で一時停止」ボタンによってChromeでサポートされるようになりました。

それを有効にするには:

  • Chromeデベロッパーツールの[ソース]タブに移動します
  • ウィンドウ下部の[一時停止]ボタンをクリックして、[すべての例外モードで一時停止]に切り替えます。

このボタンには複数の状態があることに注意してください。ボタンを押し続けると切り替えられます

  • 「すべての例外で一時停止」-ボタンの色は水色
  • 「キャッチされない例外で一時停止」、ボタンの色はです。
  • 「例外で一時停止しない」-ボタンは灰色

1

ほぼすべてのエラーは例外をスローします。「例外で一時停止」オプションでは機能しないと考えることができる唯一のエラーは構文エラーです。これは、コードが実行される前に発生するため、一時停止する場所がなく、コードは実行されません。

どうやら、Chromeはtry-catchブロック内にある場合でも、例外で一時停止しません。キャッチされない例外でのみ一時停止します。私はそれを変更する方法を知りません。

例外が発生した行を知るだけでよい場合(例外が再現可能な場合はブレークポイントを設定できます)、Errorcatchブロックに渡されるオブジェクトにstackは、例外が発生した場所を示すプロパティがあります。


マシュー、私は私が持っていたのと同じようなものを「再現」しました(更新された質問を参照)。どういうわけか、私はデバッガーにそのエラーでブレークさせません。これがChromeで機能しない理由がわかりますか(「すべてのエラーで中断」を有効にすると、Firebugで機能します)。
avernet 2010

@Mathhew、私はこれは不可能であるという別の回答を作成し、それを回答としてマークしました。あなたまたは誰かが解決策を見つけた場合、私はマーカーを変更します。
avernet 2010

1

残念ながら、Chromeのデベロッパーツールは、Firebugのように「すべてのエラーで停止する」ことができないようです。


一時停止ボタンを1回クリックするだけで(青色になります)、[キャッチされた例外で一時停止]オプションをマークしないでください。それだけで、エラー時にのみ一時停止します。
ロイショア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.