ProgramingTip

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

bestdevel 2020. 10. 28. 20:20
반응형

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


Chrome 도구를 알아낼 수없는 것입니다.

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

내가 취한 단계 :

  1. ctrl-shift-i를 콘솔을 불러 왔습니다.
  2. 소스를 클릭 한 다음 디버그하려는 관련 자바 펼쳐 파일을 선택합니다.
  3. 왼쪽 줄 옆의 여백에 파란색 태그를 배치하여 중지 할 중단 점을 설정합니다.
  4. 내 웹 페이지 (PHP 언어 페이지)에서 자바 코드를 시작하는 버튼을 클릭했습니다.
  5. 코드는 멈추지 않고 계속 실행됩니다.

또한 Watch Expressions도 작동하지 않습니다. 내가보고 싶은 변수가 정의되어 있지 않다는 메시지가 계속 표시됩니다.

추가 테스트에서 중단 점이 실패한 원인이 내 코드라는 것을 발견했습니다. "$ ("# frmVerification "). submit (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;
    });
});

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

debugger;

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


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


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

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

//@ sourceURL=/Scripts/test.js

이 자바 펼쳐 파일이 축소되어 브라우저에 의해로드 될 경우 일반적으로 Chrome Dev Tools에 축소되지 않은 버전이 존재합니다.

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

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

test.js가 하단에있는 경우

//@ sourceURL=/Scripts/test.js

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

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

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

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


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

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

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


어느 쪽이든 문제가 있습니다. 내가 사용하지 않는 한 작동하지 않는 중단 점 debugger;. "복원 복원 및 다시로드"로 중단 점 문제를 해결했습니다. Chrome 개발자 도구, 설정, 재구성 복원 및 새로 고침에 있습니다.


"디버거"로 펼쳐보기를 확인하십시오. 그것의 제품은 크롬에 의해 블랙 박스되지 않습니다. 소스 탭으로 이동하여 블랙 박스를 확인하고 해제 할 수 있습니다.

편집 : 스크린 샷 추가.

블랙 박스를 끄는 방법.


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


귀하의 문제가 발생했습니다. 다른 사람들에게 도움이되기를 바라며 여기에 공유하고 있습니다. 나는 이전에 다른 상황에 없었던 프로젝트에서 오늘 다시 발생하는 상황에 직면하지 않았습니다.

대본 :

동일한 소스에서 설치된 두 개의 부트 가능한 모달과 한 세트의 자바 펼쳐 파일 (blueimp의 멋진 jquery 파일 업로드)을 사용하는 한 페이지가 있습니다.

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

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

  • 표준 HTML <script>태그 를 통해 포함 된 두 모달을 모두 지원하는 자바 펼쳐 .

중단 점은 Modal 1 때 알림을 알아 챘습니다. 코드가 실제로 평가되고 실행되고 있음은 확실하지만 동적으로 추가 된 Modal 2에서 코드가 실행될 수 있고 작동하지 않습니다. 경고 상자가 나타나고 코드 유형의 항목이 실행되고 출력은 코드에 논리를 나타냅니다.

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

추신 : 나는 항상 SO를 사용합니다.


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


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


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


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

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

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


따라서 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")

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

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

debugger

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

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

여기에 이미지 설명 입력


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


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

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

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

하나 미만이 작동하고 중단 점이 예상대로 부딪 쳤습니다.

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

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

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

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

다음으로 간단히 myDebuggerFlag = true를 입력합니다. 콘솔 라인에서. (물론 먼저 myDebugger에서 나와야합니다.

참고 URL : https://stackoverflow.com/questions/11788081/chrome-javascript-debugger-breakpoints-dont-do-anything

반응형