내 JavaScript 코드를 어떻게 디버깅 할 수 있습니까? [닫은]


113

문제가있는 코드 조각이 있다는 것을 알게되면 디버깅을 어떻게해야합니까?

답변:


78

Firebug 는 이러한 목적으로 가장 많이 사용되는 도구 중 하나입니다.



7
나는 방화범을 좋아하지만 그것이 웹킷의 검사자보다 머리와 어깨에 있다고 주장하지는 않을 것입니다.
Ryan Florence

2
Firebug는 나왔을 때보 다 앞서 있었지만 최근에 나온 다른 도구를 고려할 때 최고의 도구라고 생각하지 않습니다.
James

Firebug를 발견 한 이후로 사용하고 있으며 많은 도움이됩니다! console.debug, 프로파일 러, 검사기 ...
Julio Greff 2009-06-12

@NinaScholz 이제 모든 브라우저는 기본적으로 제트 팩과 함께 제공됩니다!
oneCoderToRuleThemAll

74

모든 최신 브라우저에는 기본 제공 JavaScript 디버깅 응용 프로그램의 일부 형식이 함께 제공됩니다. 이에 대한 자세한 내용은 관련 기술 웹 페이지에서 다룹니다. JavaScript 디버깅에 대한 개인적 선호 는 Firefox의 Firebug 입니다. 나는 Firebug가 다른 어떤 것보다 낫다고 말하는 것이 아닙니다. 그것은 당신의 개인적인 선호도에 달려 있으며 어쨌든 모든 브라우저에서 당신의 사이트를 테스트해야 할 것입니다. (개인적으로 가장 먼저 선택하는 것은 항상 Firebug입니다).

Firebug를 예로 들어 아래에서 몇 가지 고급 솔루션을 다룰 것입니다 .

Firefox

Firefox에는 자체 내장 된 JavaScript 디버깅 도구가 함께 제공되지만 Firebug 애드온을 설치하는 것이 좋습니다 . 이것은 편리한 기본 버전을 기반으로 몇 가지 추가 기능을 제공합니다. 여기서는 Firebug에 대해서만 이야기하겠습니다.

Firebug가 설치되면 아래와 같이 액세스 할 수 있습니다.

먼저 요소를 마우스 오른쪽 버튼으로 클릭하면 Firebug로 요소를 검사 할 수 있습니다 .

Firebug에서 요소 검사

이것을 클릭하면 브라우저 하단에 Firebug 창이 열립니다 :

Firebug 창

Firebug는 여러 기능을 제공하지만 우리가 관심을 갖는 것은 스크립트 탭입니다. 스크립트 탭을 클릭하면 다음 창이 열립니다.

스크립트 탭

분명히 디버깅하려면 reload 를 클릭해야합니다 .

sctipt 탭의 JavaScript

이제 중단 점 을 추가하려는 JavaScript 코드의 왼쪽에있는 줄을 클릭하여 중단 점 을 추가 할 수 있습니다 .

중단 점 추가

중단 점에 도달하면 다음과 같이 표시됩니다.

적중되는 중단 점

감시 변수를 추가 하고 일반적으로 최신 디버깅 도구에서 기대하는 모든 작업을 수행 할 수도 있습니다 .

변수보기

Firebug에서 제공하는 다양한 옵션에 대한 자세한 내용은 Firebug FAQ를 확인하십시오 .

크롬

Chrome에는 또한 자체적으로 내장 된 자바 스크립트 디버깅 옵션이 있으며 이는 매우 유사한 방식으로 작동하며 오른쪽 클릭, 요소 검사 등 입니다. Chrome 개발자 도구를 살펴보세요 . 일반적으로 Chrome에서 Firebug보다 스택 추적 이 더 좋습니다.

인터넷 익스플로러

.NET 에서 개발하고 웹 개발 환경을 사용하여 Visual Studio를 사용하는 경우 중단 점 등을 배치하여 JavaScript 코드를 직접 디버깅 할 수 있습니다. JavaScript 코드는 C # 또는 VB.NET 코드를 디버깅하는 것과 똑같이 보입니다 .

이 기능이없는 경우 Internet Explorer는 위에 표시된 모든 도구도 제공합니다. 성가 시게도 오른쪽 클릭 으로 Chrome 또는 Firefox의 요소 기능을 검사 하는 대신 F12 키 를 눌러 개발자 도구에 액세스 할 수 있습니다 . 이 질문 은 대부분의 요점을 다룹니다.


... 당신은 있어야합니다 에 복사 붙여 넣기 오른쪽 갈 준비 버퍼 것을 있었다? :)
Christian Ternus 2013 년


3
죄송합니다. 같은 사람이 질문하고 답변하는 것을 완전히 놓쳤습니다! 누군가이 질문을 할 때마다 넣은 Javascript Debug Copypasta가 있다고 생각했습니다.
Christian Ternus 2013 년

54
  • Internet Explorer 8 (개발자 도구- F12). 다른 것은 Internet Explorer 땅에서 두 번째 비율입니다.
  • Firefox 및 Firebug . F12표시하려면 누르십시오 .
  • Safari (메뉴 표시 줄, 환경 설정 -> 고급 -> 개발 메뉴 표시 줄 표시)
  • Google Chrome JavaScript 콘솔 ( F12또는 ( Ctrl+ Shift+ J)). 대부분 Safari와 동일한 브라우저이지만 Safari가 더 나은 IMHO입니다.
  • Opera ( 도구 -> 고급 -> 개발자 도구 )

+1 오페라 js 디버거가 나머지 모든 것보다 더 나은 오류 메시지를 제공합니다.
Gabriel Solomon

3
2009 년에 Safari는 2014 년에 Chrome 개발자 도구를 능가했을 수도 있지만, 저는 일주일 중 언제든지 Safari를 통해 Chrome에서 디버깅을 수행 할 것입니다. 크롬의 개발자 도구와 파이어 폭스의 방화범은 최고 수준입니다 ... 여전히 사용하기 불편하지만 IE11의 개발 도구는 3 위 (에 아마 이럴 )
scunliffe

29

JavaScript 코드를 디버깅하기 위한 디버거 키워드가 JavaScript에 있습니다. 디버거를 넣으십시오 . JavaScript 코드의 스 니펫. 이 시점에서 JavaScript 코드 디버깅이 자동으로 시작됩니다.

예를 들면 :

이것이 test.js 파일 이라고 가정 하십시오.

function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();
  • 브라우저가 디버거가 활성화 된 개발자 옵션에서 웹 페이지를 실행하면 자동으로 디버거 에서 디버깅을 시작합니다 . 포인트.
  • 브라우저에서 개발자 창을 열어야합니다.

Safari에서는 때때로 작동하고 때로는 작동하지 않습니다. 나는 그것이 내쪽에 있다고 확신합니다. FWIW 자동으로 JSContexts에 대한 웹 검사기 표시를 활성화했습니다.
1.21 기가 와트

21

나는 오래된 좋은 printf접근법 (언제든지 잘 작동 할 고대 기술)을 사용합니다.

마술을 보아라 %o.

console.log("this is %o, event is %o, host is %s", this, e, location.host);

%oJS 객체의 클릭 가능하고 딥 브라우징 가능하고 예쁘게 인쇄 된 내용을 덤프 합니다. %s기록 용으로 만 표시되었습니다.

이:

console.log("%s", new Error().stack);

new Error()호출 지점에 대한 Java와 유사한 스택 추적을 제공합니다 ( 파일 경로 및 줄 번호 포함 !!).

모두 %onew Error().stack크롬과 파이어 폭스에서 사용할 수 있습니다.

이러한 강력한 도구를 사용하여 JS에서 무엇이 잘못되었는지 가정하고 디버그 출력을 입력하고 ( if데이터 양을 줄이기 위해 명령문을 감싸는 것을 잊지 마십시오 ) 가정을 확인하십시오. 문제를 수정하거나 새로운 가정을하거나 더 많은 디버그 출력을 비트 문제에 추가합니다.

스택 추적에도 다음을 사용하십시오.

console.trace();

콘솔 이라고 말하면

해피 해킹!


2
console.trace (); 나머지와는 다른 대답입니다.
Saurabh Patil 2014 년

12

Firebug 및 IE Debugger로 시작하십시오.

하지만 JavaScript의 디버거에주의하십시오. 때때로 그들은 디버그하려는 오류 중 일부를 일으킬 정도로 환경에 영향을 미칩니다.

예 :

Internet Explorer의 경우 일반적으로 점진적인 속도 저하이며 일종의 메모리 누수 유형 거래입니다. 30 분 정도 후에 다시 시작해야합니다. 상당히 규칙적인 것 같습니다.

Firebug의 경우 아마도 1 년이 넘었을 것이므로 이전 버전 일 수 있습니다. 결과적으로 세부 사항을 기억하지 못했지만 기본적으로 코드가 올바르게 실행되지 않았고 잠시 디버깅을 시도한 후 Firebug를 비활성화하고 코드가 제대로 작동했습니다.


9

alert(msg);"나는 단지 무슨 일이 일어나고 있는지 알고 싶다"시나리오에서 작동 하지만 ... 모든 개발자는 당신이 빠져 나갈 수없는 (매우 크거나 끝없는) 루프에 빠지게되는 경우에 직면했습니다.

개발 중에 매우 직접적으로 디버그 옵션을 원할 경우 문제를 해결할 수있는 디버그 옵션을 사용하는 것이 좋습니다. (PS Opera, Safari? 및 Chrome? 모두 기본 대화 상자에서이 기능을 사용할 수 있습니다.)

//global flag
_debug = true;
function debug(msg){
  if(_debug){
    if(!confirm(msg + '\n\nPress Cancel to stop debugging.')){
      _debug = false;
    }
  }
}

위의 내용을 사용하면 Enter/를 누르면 Ok각 메시지를 건너 뛸 수 있지만 Escape/를 누르면 Cancel멋지게 나눌 수있는 팝업 디버깅의 큰 루프에 들어갈 수 있습니다.


6

내가 사용하는 웹킷의 개발자 메뉴 / 콘솔 (사파리 4). Firebug와 거의 동일합니다.

console.log()새로운 검정은 alert().


2
console.log를 코드 전체에 넣으면 IE를 손상시킬 수 있으므로 제거하는 것을 잊지 마십시오.
Liam

5

내 첫 번째 단계는 항상 HTML의 유효성을 검사하고 JSLint로 구문을 확인하는 것 입니다. 깨끗한 마크 업과 유효한 JavaScript 코드가 있으면 Firebug 또는 다른 디버거를 사용할 때입니다.


@Ken Link broken :(
Thirisangu Ramanathan

@Thirisangu 감사합니다! 링크 수정
Ken

3

Visual Studio 2008에는 매우 훌륭한 JavaScript 디버깅 도구가 있습니다. 클라이언트 측 JavaScript 코드에 중단 점을 놓고 서버 측 코드와 동일한 도구를 사용하여 단계별로 실행할 수 있습니다. 프로세스에 연결하거나이를 활성화하기 위해 까다로운 작업을 수행 할 필요가 없습니다.


3

Fiddler , Firebug 및 Visual Studio와 같은 몇 가지 도구를 사용합니다 . Internet Explorer 8에 좋은 기본 제공 디버거가 있다고 들었습니다.


"Fiddler"는 Fiddler 웹 디버거를 의미합니까?
Thomas L Holaday

3

Internet Explorer 8이 나올 때까지 Firebug 를 사용 했습니다. 나는 Internet Explorer의 열렬한 팬은 아니지만 정말 멋진 디버거가 포함 된 내장 된 개발자 도구에 시간을 보낸 후 다른 것을 사용하는 것은 무의미 해 보입니다. 나는 마이크로 소프트에게 내 모자를 기울여야한다. 그들은이 도구에 대해 환상적인 일을했다.


2
기본 디버깅의 경우 IE8 디버거가 대부분의 요구 사항에 적합합니다. 그러나 어떤 종류의 성능 테스트를 수행하는 경우 IE가 부족하다는 것을 금방 알 수 있습니다. 나는 최근에 무거운 자바 스크립트를 활용하는 프로젝트를 가지고 있었고, 우리는 끔찍한 "응답하지 않는 스크립트 오류"를 겪고 있었기 때문에 열등한 시스템에 대한 것들을 정리해야했습니다. Firebug는이 경우에 매우 유용했습니다. console.profile () 메서드를 실행하여 내 모든 시간이 어디에 소비되었는지 파악할 수 있었기 때문입니다.
Gavin

1
IE8 디버거에는 호출 트리, 호출 횟수 및 각 메서드에 소요 된 시간을 제공하는 프로필 기능 (FireBug만큼 그래픽은 아니지만)도 있습니다. 나는 어떤 JS 코드가 너무 오래 걸리는 것을 분리하는 데 이것이 적절하다는 것을 알았습니다.
James

3

YUI Logger를 확인할 수도 있습니다 . HTML에 몇 개의 태그를 포함하기 만하면됩니다. 그것은 다소 필수적인 Firebug에 대한 유용한 추가입니다.


jQuery에는 비슷한 기능이 없습니까?
shapr

2

Internet Explorer 8의 새 버전 (를 누름 F12)이 JavaScript 코드를 디버그하는 데 매우 유용 하다는 것을 알았습니다 .

물론 Firefox를 사용한다면 Firebug 가 좋습니다.


2

Visual Studio의 JavaScript 디버거를 사용하는 것 외에도 페이지에 포함하는 간단한 패널을 직접 작성했습니다. 단순히 Visual Studio의 직접 실행 창과 같습니다 . 변수의 값을 변경하고, 함수를 호출하고, 변수의 값을 볼 수 있습니다. 단순히 텍스트 필드에 작성된 코드를 평가합니다.




2

Visual Studio를 사용하는 경우 debugger;디버깅하려는 코드 위에 놓기 만하면 됩니다. 실행하는 동안 컨트롤은 해당 위치에서 일시 중지되며 여기에서 단계별로 디버그 할 수 있습니다.


1

대부분의 답변과 마찬가지로 실제로는 다음과 같은 사항에 따라 다릅니다. 디버깅으로 무엇을 달성하려고합니까? 기본 개발, 성능 문제 수정? 기본 개발의 경우 이전의 모든 답변이 충분합니다.

특히 성능 테스트를 위해 Firebug를 권장합니다. 시간 측면에서 가장 비용이 많이 드는 방법을 프로파일 링 할 수 있다는 것은 내가 작업 한 여러 프로젝트에서 매우 중요했습니다. 클라이언트 측 라이브러리가 점점 더 강력 해지고 일반적으로 클라이언트 측에 더 많은 책임이 부여됨에 따라 이러한 유형의 디버깅 및 프로파일 링은 더욱 유용해질 것입니다.

Firebug 콘솔 API : http://getfirebug.com/console.html


0

누르면F12 웹 개발자를 신속하게 브라우저를 떠나지 않고 자바 스크립트 코드를 디버깅 할 수 있습니다. 모든 Windows 설치에 내장되어 있습니다.

에서 인터넷 익스플로러 11 , F12 도구 등의 중단 점, 시계와 지역 변수보기, 메시지 및 즉시 코드 실행을위한 콘솔로 디버깅 도구를 제공합니다.


이 링크를 참조하십시오 : w3schools.com/js/js_debugging.asp
Reza
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.