2008-10-13 4 views
1

우리는 ASP.NET 응용 프로그램을 가지고 있으며 클라이언트 사이트에서 실행될 때 종종 null 참조 자바 스크립트 오류가 발생합니다. 이 모든 오류와 마찬가지로 IE6이 표시하는 정보는 도움이되지 못합니다. 하지만 문제는 내가 IE 스크립트 디버거를 설치하자마자 오류가 다시 발생하지 않는 것입니다. 스크립트 디버거가 설치되어 있지 않으면 오류가 다시 발생합니다. 클라이언트 사이트에서 javascript 디버깅에 도움이 될 수있는 다른 도구가 있습니까? 이 오류는 IE7 또는 Firefox에서도 생성되지 않습니다.가장 어려운 JavaScript 디버깅 문제

+1

DOM 조작 전에 DOM 조작이 완전히로드되지 않았습니다 (onload 또는 DOM 완료를 감지하지 못하는 일부 조작이 완료되지 않았습니까?)? 내 경험에 IE (6과 7)에서 이상한 돔 오류의 가장 큰 원인입니다. – jsight

+0

jsight 답장으로 이동해야 투표 할 수 있습니다. – UnkwnTech

+0

IE 스크립트 디버거 대신 Visual Studio 또는 Visual Studio Express 디버거를 사용하십시오 (http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web- 개발자 - 표현 /). 운이 좋을지도 몰라. – outis

답변

7

적어도 어떤 개체가 null인지 알고 있습니까? 무슨 줄 알아?

그렇지 않은 경우 문제가 해결 될 때까지 코드를 주석 처리하여 시작할 수 있습니다. 그런 다음 문제가 다시 나타날 때까지 조각을 다시 가져 오기 시작하십시오.

alert()은 (는) 친구입니다. 시도/catch - 예외에 대한 경고와 함께 - 역시 친구가 될 수 있습니다.

파이어 폭스에 파이어 버그로로드하면 파이어 폭스에 오류가 표시되지 않더라도 문제가있는 라인이나 오브젝트를 좁힐 수있는 경우 유용한 파일을 제공 할 수 있습니다. 같은 맥락에서 IE 스크립트 디버거는 오류가 발생하지 않아도 유용한 정보를 줄 수 있습니다.

코드가 난독 처리됩니까? 문제가 혼란스럽지 않을 때 발생합니까?

소스를 로컬 파일로 복사하고 서버를 포함시키지 않고 코드로 재생할 수 있습니까? 그것은 실험을 가속화 할 것이며, 많은 것을 할 것입니다.

0

Heisenbugs 정말 빨아들입니다. 나는 jsight에 버그가 어떤 경쟁 조건에 의해 야기되었을 가능성이 있다고 동의한다; 즉, 아직 존재하지 않는 페이지 요소에 액세스하려고합니다.

+0

나는 경주 조건처럼 들린다는 것에 동의한다. 그냥 찾기가 어렵습니다. – Craig

0

Visual Studio를 설치 했습니까?

그렇다면 스크립트 디버거처럼 IE에서 스크립트 디버깅을 사용 설정하십시오.

debugger; 

은 다음 페이지를 실행 ...처럼 자바 스크립트에 줄을 추가합니다. 디버깅을 시작하라는 대화 상자가 나타납니다. VS의 새 인스턴스를 선택하고 코드를 살펴보고 오류가 발생한 위치를 확인합니다.

0

Firebug Lite을 사용해 보셨습니까? bookmarklet을 통해 Firebug의 많은 기능을 제공합니다. 스크립팅 오류 자체에 도움이 될지는 모르겠지만로드 된 스크립트와 DOM을 찾아 볼 수 있습니다.

Companion.JS도 IE보다 약간 더 나은 스크립트 디버깅 지원을 제공하므로 도움이 될 수 있습니다.

2

jslint으로 코드 확인 - IE6은 종종 Firefox가 용서하는 사소한 구문 오류를 해결합니다.

+2

모든 자바 스크립트 디버깅 질문에 대한 모든 대답은 위와 함께 시작해야합니다. "코드가 JSLint로 유효성을 검사하지 않으면 다시 실행하십시오." –

2

내가 걱정하는 사람은 누구나이 문제를 발견했습니다. ASP.NET에서 Ajax와 충돌 한 것은 .NET의 버그였습니다. .NET 2.0에서 수정되었습니다. sp1은 설치되지 않았지만 설치하자마자 모든 문제가 사라졌습니다.