Chrome 코드에서 JavaScript 중단 점을 설정하는 방법은 무엇입니까?


687

Chrome 디버거가 코드를 통해 또는 다른 종류의 주석 태그를 사용하여 한 줄에 침입하도록하고 싶습니다 console.break().


46
당신은 시도 debugger;하거나 개발자 도구 모음에서 정기적으로 브레이크 포인트를 사용하고 계십니까?
diaho

개발자 도구에서 스크립트 감시자를 사용하여 설정하는 대신 코드 자체에서 중단 점을 설정한다는 의미입니까?
Faris M


9
중복되지 않습니다. "Chrome에서"와 "코드에서"는 서로 다른 두 가지로,이 질문은 XHR이 아닌 많은 시나리오에 적용됩니다. 예 다른 질문에 대한 답변 중 하나가이 질문에 답변하지만 다른 질문에는 해당되지 않습니다. 문자 그대로 "코드 크롬에서 자바 스크립트 중단 점 설정"을 봤는데 이것이 첫 번째 결과이며 다른 질문은 첫 페이지에도 없습니다.
AaronLS

답변:


1161

debugger;코드 내에서 사용할 수 있습니다 . 개발자 콘솔이 열려 있으면 실행이 중단됩니다. 방화범에서도 작동합니다.


8
좋은 트릭은 몇 초 후에 디버거를 트리거하는 것입니다.setTimeout(function(){debugger;}, 3000);
Shahar

30
타이머 트릭은 일반적인 관행입니까? 검증 / 정당화?
Justus Eapen

4
이것은 매우 도움이됩니다. debugger;모든 주요 브라우저 에서도 지원됩니다. 자세한 정보 : w3schools.com/jsref/jsref_debugger.asp
ScottyG

16

@JustusEapen 문제는 자바 스크립트가 단일 스레드이므로 실행중인 코드를 방해 할 수 없다는 것입니다.
Vitruvius

27

버튼 클릭 리스너를 설정하고 debugger;

$("#myBtn").click(function() {
 debugger;   
});

데모

http://jsfiddle.net/hBCH5/

JavaScript 디버깅에 대한 자료


1
이로 인해 클릭 핸들러에 중단 점이 설정됩니다. 아마도 OP가 원하지 않는 것
ᆼ ᆺ ᆼ

@ PeterV 디버깅하고있는 코드 블록에 가까운 곳에 코드를 열려고하면 유용하지만 항상 디버깅하고 싶지는 않지만 ... 그렇습니다. 디버거를 열면 키를 누를 수 있습니다.
Armstrongest

27

을 사용 debug(function)하여 function호출 될 때 중단 할 수도 있습니다 .

명령 행 API 참조 : 디버그


2
매우 훌륭합니다. 현재는 Chrome 인 것으로 보이지만 어쨌든 내 기본 플랫폼입니다. 이제 전역 디버깅 플래그 "debug"호출을 중지해야합니다.
brichins

Chrome 디버거 명령 줄 API 참조에는 실제로 내가 모르는 다른 유용한 정보가 포함되어 있습니다. 감사!
Peter T.


8

"스크립트"탭에서 코드가있는 곳으로 이동하십시오. 줄 번호 왼쪽에서 클릭하십시오. 중단 점이 설정됩니다.

스크린 샷 :

크롬 중단 점 스크린 샷

그런 다음 스크린 샷에 표시된대로 오른쪽 탭에서 중단 점을 추적 할 수 있습니다.


41
이것은 질문에 대한 답이 아니며, 코드
robertc

39
xn .: "여기서 0 표를받은 작은 아기 였을 때의 대답 사진입니다. 모두 자랐습니다."
AaronLS

3
Ajax 호출로 JS 스크립트를로드하면 여기에 표시되지 않으므로 코드에 중단 점이 필요합니다.
Petruza

@FlorianMargaine, 더 이상 스크립트 탭이 없습니다. 이미지를 업데이트하십시오.
Pacerier

Drupal과 같은 일부 프레임 워크에서 JS는 캐시 버스 팅 쿼리 문자열 접미사가 추가됩니다. 캐시를 플러시하면 종종이 접미사를 업데이트하여 이전로드에서 설정 한 중단 점을 지울 수 있습니다.
Nick

7

debugger ES5부터 EcmaScript에 의해 예약 된 키워드이며 선택적 시맨틱이 제공됩니다.

결과적으로 Chrome뿐만 아니라 Firefox 및 Node.js 를 통해 사용할 수도node debug myscript.js 있습니다.

표준은 말합니다 :

통사론

DebuggerStatement :
    debugger ;

의미론

DebuggerStatement 프로덕션을 평가하면 구현시 디버거에서 실행될 때 중단 점이 발생할 수 있습니다. 디버거가 없거나 활성화되어 있으면이 명령문은 관찰 가능한 효과가 없습니다.

프로덕션 DebuggerStatement : 디버거; 다음과 같이 평가됩니다.

  1. 구현 정의 디버깅 기능이 사용 가능하고 사용 가능한 경우
    1. 구현 정의 디버깅 조치를 수행하십시오.
    2. 결과는 구현 정의 완료 값이되게하십시오.
  2. 그밖에
    1. 결과를 (정상, 비어 있음, 비어 있음)으로하십시오.
  3. 결과를 반환합니다.

ES6에는 변화가 없습니다.


3

가능할 수 있으며 여러 가지 이유가 있습니다. 예를 들어, 페이지 로딩 시작 부분에 가까운 자바 스크립트 무한 루프를 디버깅하면 크롬 개발자 툴셋 (또는 파이어 버그)이 올바르게로드되지 않습니다.

섹션 2 참조

http://www.laurencegellert.com/2012/05/the-three-ways-of-setting-breakpoints-in-javascript/

또는 필요한 테스트 지점에서 코드에 단어 디버거가 포함 된 줄을 추가하십시오.


3

중단 점 :-

중단 점이 실행을 중지하고 JavaScript 값을 검사 할 수 있습니다.

값을 검사 한 후 코드 실행을 재개 할 수 있습니다 (일반적으로 재생 버튼 사용).

디버거 :-

디버거; JavaScript 실행을 중지하고 디버깅 기능을 호출합니다.

디버거 문은 실행을 일시 중단하지만 파일을 닫거나 변수를 지우지 않습니다.

Example:-
function checkBuggyStuff() {
  debugger; // do buggy stuff to examine.
};


2

JavaScript 코드를 디버깅하는 방법에는 여러 가지가 있습니다. 다음 두 가지 접근 방식은 코드를 통해 JavaScript를 디버깅하는 데 널리 사용됩니다.

  1. console.log()브라우저 콘솔에서 값을 인쇄하는 데 사용 합니다. (이는 코드의 특정 지점에서 값을 이해하는 데 도움이됩니다)

  2. 디버거 키워드. debugger;디버깅하려는 위치에 추가 하고 브라우저의 개발자 콘솔을 열고 소스 탭으로 이동하십시오.

JavaScript 코드를 디버깅하는 더 많은 도구와 방법은 이 링크에서 W3School에 의해 제공됩니다 .


1
+1 및 console.log를 사용하면 코드를 찾는 데 도움이됩니다. 일반적으로 파일 옆에 파일 / 줄 번호가 메시지 옆에 표시되어 있으며이를 클릭하면 디버거에서 코드를 열거 나 중단 점 등을 설정할 수 있습니다.
John Henckel

0

debugger;자바 스크립트 코드를 debugger;일시적으로 정지시키고 영구적으로 멈추지 않기 때문에 자바 스크립트 코드를 죽이고 중지하려는 경우 권장 하지 않습니다.

명령에서 자바 스크립트 코드를 올바르게 종료하고 중지하려면 다음을 사용하십시오.

throw new Error("This error message appears because I placed it");

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