크롬 자바 스크립트 디버거 중단 점은 아무것도하지 않나요?


81

Chrome 디버깅 도구를 알아낼 수없는 것 같습니다.

크롬 버전 21.0.1180.60m가 있습니다.

내가 취한 조치 :

  1. ctrl-shift-i를 눌러 콘솔을 불러 왔습니다.
  2. 소스를 클릭 한 다음 디버그하려는 관련 자바 스크립트 파일을 선택합니다.
  3. 왼쪽 줄 옆의 여백에 파란색 태그를 배치하여 코드를 중지 할 중단 점을 설정합니다.
  4. 내 웹 페이지 (PHP 렌더링 페이지)에서 자바 스크립트 코드를 시작하는 버튼을 클릭했습니다.
  5. 코드는 멈추지 않고 성공적으로 실행되었습니다.

또한 Watch Expressions도 작동하지 않는 것으로 나타났습니다. 내가보고 싶은 변수가 정의되지 않았다는 메시지가 계속 표시됩니다.

추가 테스트에서 중단 점이 실패하는 원인이 내 코드라는 것을 발견했습니다. "$ ("# frmVerification "). submit (function () {"줄에서 실패한 것 같습니다. 해당 function () 내부의 중단 점으로 들어 가지 않습니다.

다음은 다음과 같습니다.

//function to check name and comment field 
var test = "this is a test";
var test2 = "this is another test";

function validateLogin(){
    //if(userEmail.attr("value") && userPass.attr("value"))
        return true;
    //else
        //return false;
}

//onclick on different buttons, do different things.
function ajaxRequest(){

}
$(document).ready(function(){
  //When form submitted
    $("#frmVerification").submit(function(){
        var username = $("#username");
        var token = $("#token");
        var action = $("#action");
        var requester = $("#requester");
        if(validateLogin()){
            $.ajax({
            type: "post",
            url: "verification.php",
            data: "username="+username.html()+"&token="+token.val()+"&action="+action.val()+"&requester="+requester.val(),
            success: function(data) {
                try{
                    var jsonObj = $.parseJSON(data); //convert data into json object, throws exception if data is not json compatible
                    if(jsonObj.length > 0){//if there is any error output all data
                        var htmUl = $('<ul></ul>');
                        $.each(jsonObj, function(){
                            htmUl.append('<li>' + this + '</li>');
                        });
                        $("#errOut").html(htmUl);
                    }else{
                        alert("Your account is now activated, thank you. If you have already logged in, press OK to go to the home page. If not, you must log in first.");
                        window.location.replace("home.php");
                    }
                }
                catch(e){//if error output error to errOut]
                    $("#errOut").html("PHP module returned non JSON object: <p>"+data+"</p>");
                }
            }
        });
    }
    else alert("Please fill UserName & Password!");
        return false;
    });
});

2 단계의 "소스"는 "리소스"여야합니까?
Deqing

내 크롬은 요소, 리소스, 네트워크, 소스, 타임 라인, 프로필, 감사, 콘솔의 순서대로 패널에 있습니다. 그러나 Resources에서는 중단 점을 추가 할 수 없습니다. 출처 만 가능합니다.
체이서

중단 점이 작동하는지 확인하기 위해 간단한 간단한 자바 스크립트로 간단한 페이지를 시도 할 수 있습니다. 이것으로 Chrome 21.0.1180.60
Deqing

또한 많은 온라인 지침을 살펴 보았는데 "스크립트"패널이 있어야하는데 ... 없습니까?
체이서

예. 내 chrome (20.0.1132.43)에는 Elements, Resources, Network, Scripts, Timeline, Profile, Audits, Console이 있습니다. 그래서 Chrome 21에서는 "Scripts"를 "Sources"로 변경 한 것 같습니다
Deqing

답변:


160

중단 점이 왜 안타는지 모르겠지만 코드를 입력하는 확실한 방법 중 하나는 다음을 입력하는 것입니다.

debugger;

코드를 중지하고 크롬 개발자 도구 창을 연 상태에서 다시 실행합니다.


주의해야 할 한 가지 작은 사항은 완료 한 후 정리하고 디버거 라인을 제거하는 것입니다. YUI 압축기를 통해 JavaScript 파일을 실행 한 적이있는 경우 debugger;줄이 있으면 오류가 발생합니다.


1
디버거를 jquery 함수 내에 넣었는데 여전히 들어오지 않습니다. 제가 업로드 한 코드를보세요. 이것은 JQuery 때문입니까?
체이서

1
@chrolli-디버거가 보이지 않습니다. 코드에 있지만 어쨌든 jQuery와 함께 작동해야합니다. 대신 디버거의 ;, 바로 확인 코드가 전혀 호출되고 만들어 거기 경고를 던져
아담 Rackis

1
@AdamRackis 디버거에 감사드립니다. 팁. 정말 유용합니다 !! :)
gsaslis

1
저에게도 효과가 있었고 줄을 제거한 후 Chrome 중단 점 기능이 정상으로 돌아 왔습니다.
Jeroen Rondeel 2014 년

1
디버거가 작동하려면 네트워크 탭에서 '캐시 비활성화'를 설정해야합니다. 그렇지 않으면 캐시 된 코드를 실행하게됩니다. 이것을 선택하고 Ctrl F5로 다시로드하십시오.
CYoung

20

늦게 대답했지만 같은 문제가 있었는데 대답이 달랐습니다.

제 경우에는 코드에 sourceURL 참조가 있습니다.

//@ sourceURL=/Scripts/test.js

이 자바 스크립트 파일이 축소되어 브라우저에 의해로드되면 일반적으로 Chrome Dev Tools에 축소되지 않은 버전이 어디에 있는지 알려줍니다.

그러나 축소되지 않은 버전을 디버깅하고이 줄이 존재하는 경우 Chrome Dev Tools는 "일반"경로 대신 해당 sourceURL 경로에 매핑됩니다.

예를 들어 웹 서버에서 로컬로 작업하는 경우 Chrome Dev Tools의 Sources 탭에서 지정된 JS 파일의 경로는 http://localhost/Scripts/test.js

test.js가 하단에있는 경우

//@ sourceURL=/Scripts/test.js

그러면 중단 점은 파일 경로가의 /Scripts/test.js정규화 된 URL이 아닌 경우에만 작동합니다.http://localhost/Scripts/test.js

Chrome 38에서 위의 예를 그대로 유지하면서 Sources 탭을 보면 모든 파일이 실행 http://localhost/되므로 test.js를 클릭하면 Chrome이로드됩니다.http://localhost/Scripts/test.js

이 파일에 원하는 모든 중단 점을 넣을 수 있으며 Chrome은 이러한 중단 점에 도달하지 않습니다. test.js에서 함수를 호출하기 전에 JS에 중단 점을 넣은 다음 해당 함수로 들어가면 Chrome이 경로가 /Scripts/test.js. 이 파일에 중단 점을 넣으면 프로그램 흐름이 중지됩니다.

@ sourceURLJS 파일에서 줄을 제거하면 모든 것이 정상적으로 다시 작동합니다 (예 : 예상대로).


11

아마도이 버그 https://code.google.com/p/chromium/issues/detail?id=278361

이것은 Linux에서 Chrome 31.0.1650.57 (공식 빌드 235101)으로 재현됩니다.

문제를 해결하기 위해 브라우저를 다시 시작하고 있습니다.


2
OSX Capitan의 버전 50.0.2661.94 (64 비트)에 여전히 문제가 있습니다
Mexx

그냥 크롬 (51) 내가 도킹 개발 도구 창을 사용했다와 Win10에 나에게 일어난, 난 창을 죽이고 내 말에 충분했다 그
크리스 Marisic

9

비슷한 문제가 있습니다. 내가 사용하지 않는 한 작동하지 않는 중단 점 debugger;. "기본값 복원 및 다시로드"로 중단 점 문제를 해결했습니다. Chrome 개발자 도구, 설정, 기본값 복원 및 새로 고침에 있습니다.


1
그것은 나를 위해 일했습니다. 추신 : "debugger;"를 사용할 필요가 없었습니다. 버전 58.0.3029.110 정도에서 찾는 사람은 3 개의 vert dot, Settings (F1)를 클릭하고 "Restore defaults and reload"는 하단의 버튼입니다.
www-0av-Com

5

"디버거"가 포함 된 스크립트를 확인하십시오. 그것의 진술은 크롬에 의해 블랙 박스되지 않습니다. 소스 탭으로 이동하여 블랙 박스를 확인하고 해제 할 수 있습니다.

편집 : 스크린 샷 추가.

블랙 박스를 끄는 방법.


해당 기능은 어디에 있습니까? 스크린 샷?
oldwizard

다운 보팅했을 때 "블랙 박스 중지"기능의 스크린 샷이 없었습니다. 대신 "블랙 박스 중지"기능을 인터넷 검색을 시작해야했기 때문에 대답은 도움이되지 않았습니다. 대답이 향상되었습니다. 반대표를 제거합니다.
oldwizard 2017

이것이 제가 찾던 것입니다. 대답 해주셔서 감사합니다.
Kishan Patel

4

나는 이것을 여러 번 만났고 처음에는 localhost에서 잘 작동하고 갑자기 중단 점이 작동하지 않고 127.0.0.1로 전환 한 다음 다시 작동합니다. 희망이 도움이됩니다.


2

크롬과 파이어 폭스에서 비슷한 문제가 발생했지만 문제에 대한 해결책이 아닐 수 있습니다. 다른 사람들에게 도움이 될 수 있기를 바라며 여기에 공유하고 있습니다. 나는 이전에 다른 관련되지 않은 프로젝트에서 이러한 상황에 직면했지만 오늘 다시 발생하기 전까지는 이유를 이해하지 못했습니다.

대본:

동일한 소스에서 가져온 두 개의 부트 스트랩 모달과 한 세트의 자바 스크립트 파일 (blueimp의 멋진 jquery 파일 업로드)을 사용하는 한 페이지가 있습니다.

  • BS Modal 1은 페이지로드시 (php를 통해) 렌더링되며 항상 페이지에 있습니다. 새로운 관련 레코드를 추가하는 데 사용됩니다. (CakePHP .... SalesForcey 유형 물건을 생각하십시오)

  • BS Modal 2는 기존 관련 레코드를 편집하는 데 사용되며 HTML 콘텐츠는 ajax 호출에서 가져와 jQuery를 통해 DOM에 추가됩니다.

  • 표준 html <script>태그 를 통해 포함 된 두 모달을 모두 지원하는 자바 스크립트 .

중단 점은 Modal 1에서만 트리거된다는 것을 알았습니다. 코드가 실제로 평가되고 실행되고 있다는 것이 매우 분명하더라도 동적으로 추가 된 Modal 2에서 코드가 실행될 때는 작동하지 않습니다. 경고 상자가 나타나고 코드 유형의 항목이 실행되고 출력은 코드에 명시된 논리를 따릅니다.

나는 시간이 촉박했기 때문에 더 깊이 조사하지 않았지만 그것을 공개하고 커뮤니티에 환원하고 싶었습니다.

추신 : 나는 항상 SO를 사용하지만 이것은 내 첫 번째 게시물이므로 쉽게 가십시오 :-)


2

URL에서 매핑을 설정할 때와 동일한 호스트를 사용하고 있는지 확인하십시오. 예를 들어 http://127.0.0.1/my-app작업 공간을 설정하고 매핑했을 때를 통해 페이지를 보면 중단 점이 작동하지 않습니다 http://localhost/my-app. 여기까지 읽어 주셔서 감사합니다. 여기 에서 Chromium 문제에 대한 제 답변을 참조 하세요 .


2

크롬 창에서 자바 스크립트 콘솔 (또는 소스)을 열 었는지 확인하십시오. 그렇지 않으면 중단 점에 도달하지 않습니다. 오른쪽 상단 모서리에있는 옵션 버튼-> 도구-> 자바 스크립트 콘솔로 자바 스크립트 콘솔을 열 수 있습니다.


2

Chrome의 중단 점이 아무 것도 실행하지 않는 문제가있었습니다. 내 코드에서 '디버거'를 사용하려고 할 때 내 코드의 VM 버전에서만 코드를 단계별로 실행할 수있었습니다. 내 문제는 리소스를 잘못 매핑했다는 것입니다. 다시 매핑하면 문제가 해결되었습니다.


2

내 해결책은 응용 프로그램 탭에서 로컬 저장소, 세션 저장소 및 쿠키를 지우는 것이 었습니다. 그 후 Chrome은 소스에 정의 된 중단 점에서 스크립트 실행을 일시 중지합니다.

  1. Google 크롬의 응용 프로그램 탭을 클릭하십시오.
  2. 각 폴더 아래의 URL을 마우스 오른쪽 버튼으로 클릭> 지우기

스크린 샷 : 애플리케이션 탭


1
콘솔을 위로 드래그하여 입력하십시오. localStorage.clear ()를 입력하고 sessionStorage.clear ()를 입력하고 입력하십시오.
Paddymac

localStorage.clear(); sessionStorage.clear()
zr0gravity7

2

나는 debugger진술 을 제거하는 미니 어 를 가지고 있었다 ¯_ (ツ) _ / ¯


1

올바른 소스 파일에 중단 점을 넣었는지 확인하십시오. 일부 도구는 코드 사본을 여러 개 생성하고 다른 소스 파일을 시도합니다.

해결 방법 : Ctrl+P또는 과 같은 바로 가기를 사용하여 파일을 여는 대신 Ctrl+R파일 탐색기에서 엽니 다. 소스 탭에는 왼쪽 상단에 아이콘이 있습니다. 이를 사용하여 올바른 소스 파일을 열 수 있습니다.


0

따라서 Adam Rackis의 답변 외에도 중단 점 위의 자바 스크립트 파일에 오류가 있으면 플래그를 지정하거나 debugger;.

예를 들면 다음과 같습니다.

if (nonExistentVar === "something") {
  console.log("this won't happen as the above errors out");
}
debugger;
console.log("this won't print either")

1
@dckuehn 당신이 그것을 말한 경우에만. 오류 발생시 일시 중지하는 개발 도구의 옵션입니다. 때로는 실용적이지 않습니다. 예를 들어, 저는 타사 웹 사이트에서 실행되는 라이브러리 코드를 작업합니다. 라이브러리에서 작업 할 때 켜면 내 라이브러리와 관련이 있는지 여부에 관계없이 사이트에 오류가있을 때마다 실행이 일시 중지됩니다. 당신이 통제권을 가지고 있고 그것이 당신의 사이트라면 그것은 훌륭한 옵션입니다. 일부 개발 유형의 경우 방해가 될 수 있습니다.
JT.

0

크롬에서 경험했듯이 페이지를로드 할 때 디버거를 실행하려면 브라우저 콘솔을 열어야합니다.

실행하려는 자바 스크립트 파일에 이것을 넣으십시오.

debugger

브라우저 콘솔을 열고 페이지를 다시로드하십시오.

디버거는 아래 예제 이미지처럼 실행됩니다.

여기에 이미지 설명 입력


이미 게시 된 답변에 포함되지 않은 새로운 정보를 답변에 추가 했습니까?
takendarkk

0

어떻게 작동하는지 잘 모르겠지만 설정을 위해 F1을 누르고 오른쪽 하단에서 "기본값 복원 및 다시로드"를 누르면 저에게 효과적이었습니다.


0

꽤 늦게 답변했지만 위의 어느 것도 제 경우에 도움이되지 않았고 다른 점이있었습니다.

javascript 파일 type = "text / javascript"를 참조하는 동안 작업중인 레거시 응용 프로그램에서 누락되었습니다.

<script  src="ab.js" ></script>

1 미만이 작동하고 중단 점이 예상대로 타격을 입었습니다.

 <script  src="ab.js" type="text/javascript"></script>

0

내 망할 중단 점이 필요해! 매우 이상한 동작-소스의 일반적으로 빨간색 점이 회색으로 변했습니다. 이들과 debugger;중단 점은 여전히 ​​히트하는 것처럼 보이지만 일부 실행 불가능한 HTML 어딘가에 표시됩니다.

몇 시간 동안 코드를 해킹 한 후 중단 점이 마침내 올바르게 맞았지만 "Hello World"에 해당하는 정도만 남았습니다. 하하하.

그래서 페이지에 일부 서버 측 데이터가 출력되었지만 (제 경우에는 @razor 문) 비슷한 경우에도 동일합니다.

서버 출력에 잘못된 형식의 0A / 0D 문자가 있습니다-이전 캐리지 리턴-Chrome이 자체 줄 번호와 혼동을 일으켰습니다.

서버에 삽입 된 HTML을 청소하고 중단 점을 얻었습니다.

이제 CTRL-Z로 되돌릴 수있는이 코드의 양을 살펴 보겠습니다.


0

이 질문이 내 여러 검색에 대한 응답으로 나왔기 때문에 또 다른 무작위 답변을 추가하겠습니다. 공용 및 개인 메서드가있는 jQuery 개체가 있습니다. 패턴은 다음과 같습니다.

myObject = (function($){
  function publicFunction() {}
  function privateFunction() {}
  return {
    theOnlyMethod: publicFunction
  }
})(jQuery);

private 함수 내부의 줄에 중단 점을 넣으면 Chrome이 디버그하지 않고 줄이 return 문으로 이동합니다! 그래서 디버깅을 위해 개인 함수를 노출해야합니다! 이것은 오늘 아침 저에게 새로운 것입니다 (2020 년 8 월 20 일, 버전 84.0.4147.125 (공식 빌드) (64 비트)), 3 년 동안이 문제를 겪지 않았다는 것이 믿기지 않습니다.


0

Chrome 버그 일 수 있습니다. 불행히도 Chrome은 정기적으로 디버깅을 중단합니다. 종종 일종의 메모리 누수가 발생하며 몇 번의 릴리스마다 중단되거나 변경되는 경우가 많습니다.

형식이 지정된 소스를 사용한 디버깅은 현재 매우 불안정합니다.

죽은 코드를 깨려고 할 수도 있습니다.

브라우저가 아닌지 확인하려면 Firefox에서도 디버그를 시도해야합니다.


-1

10K 라인 파일에서 동일한 문제가 발생했습니다. 중단 점은 무시되고
하드 코딩 된 _debugger 문은 작동했지만 토글 할 수 없으며 루프에 배치 될 때 짜증이 날 수 있습니다. 약간의 해킹이지만 작동하는 내 솔루션은 파일 상단에 다음을 추가하는 것입니다.

let myDebuggerFlag = false;
let myDebugger = function () {
    if (myDebuggerFlag) {
        debugger;
    }
}

그런 다음 myDebugger (); 일반적으로 중단 점을 사용하는 인라인.

디버깅을 켜려면 간단히 myDebuggerFlag = true를 입력합니다. 콘솔 라인에서. (물론 먼저 myDebugger에서 나와야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.