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

1
정의되지 않은 변수 (에서와 같이 console.log(gaga)) 또는 정의되지 않은 속성 (에서와 같이 window.foo.bar)에 대한 오류.
avernet

2
그것들은 예외를 던져야합니다. "예외에 일시 중지"옵션이 저에게 효과적입니다. 내가 생각할 수없는 유일한 오류는 구문 오류이지만 코드가 실행되기 전에 발생합니다.
Matthew Crumley 2013

1
예, 지금 시도 중이며 오류가있는 곳이 깨지는 것 같습니다. 며칠 전에이 작업을 수행했으며 오류가 코드에서 발생하는 부분을 중단하는 대신 오류로 인한 예외가 발생하여 스택에서 중단되었습니다. 그림을 이동!
avernet

답변:


210

편집 : 내가 대답 한 원래 링크는 이제 유효하지 않습니다 . 최신 URL은 2016-11-11 기준 으로 https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions 입니다.

이 질문에 답이 있지만 더 이상 정확하지 않습니다. 위의 링크를 사용하십시오 ^


(위의 편집으로 대체 된 링크)-이제 모든 예외 또는 처리되지 않은 예외에서 중단되도록 설정할 수 있습니다. (당신이에있을 필요가 있습니다 소스 버튼을 볼 수있는 탭을 선택합니다.)

Chrome은 DOM 변경 또는 네트워크 이벤트 중단과 같은 다른 유용한 중단 점 기능도 추가했습니다.

일반적으로 질문에 다시 대답하지는 않지만 같은 질문을했고 지금 잘못된 답을 찾았으므로 나중에 검색 할 때 찾아온 사람들을 위해이 정보를 여기에 넣는 것으로 생각했습니다. :)


1
브라이언, 고맙습니다. 실제로 작동하고 있습니다. 이 기능은 작년 2 월에 이미 게시되었지만이 기능은 제대로 작동하지 않았지만 현재는 제대로 작동하는 것 같습니다. 피드백 감사드립니다.
avernet

링크에서 언급 한 버튼이 더 이상 존재하지 않는 것 같습니다 (적어도 현재 개발자 채널 Chrome 릴리스). 이 작업을 다시 수행하는 방법을 잘 모르겠습니다.
Andrey Fedorov

2
Andrey 님, Chrome Canary를보고 있는데 버튼이 여전히 보입니다. d.pr/i/DHwT에 표시된 것처럼 왼쪽에서 네 번째 버튼입니다. 한 번 클릭하면 모든 예외에서 일시 중지로 이동하고, 두 번째 클릭하면 잡히지 않은 예외에서 일시 중지로 이동합니다. 세 번째 클릭은 일시 중지하지 않은 기본값으로 돌아갑니다.
브라이언 아놀드 싱클레어

링크가 깨졌습니다. :(
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 [03 feb 2014]

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

크롬 27.0.1453.93 안정

디버그 옵션


22
나는 그들의 문서에서 직접 이것을 연결 한 페이스 북을 칭찬해야합니다. +1
jimm101

1
또한 사람들이 주목하기 위해 사이드 바가 확장되어 있지 않으면 버튼이 표시되지 않고 단순히 숨겨집니다.
Eric Majerus

17

Chrome에서 '모든 예외에서 일시 중지'버튼으로 지원됩니다.

사용하려면 다음을 수행하십시오.

  • Chrome 개발자 도구의 '소스'탭으로 이동
  • 창 하단의 "일시 정지"버튼을 클릭하여 "모든 예외 모드에서 일시 정지"로 전환하십시오.

이 버튼에는 여러 상태가 있습니다. 버튼을 계속 클릭하여

  • "모든 예외에서 일시 중지"-버튼은 밝은 파란색으로 표시됩니다
  • "발견되지 않은 예외에 대한 일시 정지"버튼은 자주색으로 표시 됩니다.
  • "예외시 일시 중지하지 않음"-버튼이 회색으로 표시됩니다

1

거의 모든 오류에서 예외가 발생합니다. "예외에서 일시 중지"옵션으로 작동하지 않는다고 생각할 수있는 유일한 오류는 코드가 실행되기 전에 발생하는 구문 오류입니다.

분명히 try-catch 블록 안에 있으면 예외에서 Chrome이 일시 중지되지 않습니다. 포착되지 않은 예외에서만 일시 정지됩니다. 나는 그것을 바꿀 방법을 모른다.

예외가 발생한 행을 알아야하는 경우 (예외를 재현 할 수있는 경우 중단 점을 설정할 수 있음) Errorcatch 블록에 제공된 오브젝트 stack에는 예외가 발생한 위치를 표시 하는 특성이 있습니다.


매튜, 나는 내가 가진 경우와 비슷한 것을 "재생했다"(업데이트 된 질문 참조). 어떻게 든 디버거가 해당 오류를 겪지 않습니다. 왜 이것이 Chrome에서 작동하지 않는지 알고 있습니까 ( "모든 오류에서 중단"을 활성화 할 때 Firebug와 함께 작동 함).
avernet

@Mathhew, 나는 이것이 불가능하다는 또 다른 대답을 만들어 대답으로 표시했습니다. 귀하 또는 다른 사람이 해결책을 찾으면 마커를 변경합니다.
avernet

1

불행히도 Firebug와 마찬가지로 Chrome의 개발자 도구는 "모든 오류를 중지"할 수없는 것으로 보입니다.


일시 중지 버튼을 한 번만 클릭하면 (파란색으로 표시됨) 잡힌 예외 일시 중지 옵션을 표시하지 않습니다. 이 모든 것은 오류시에만 일시 중지됩니다.
Roy Shoa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.