ASP 스크립트 디버깅

경험이 많은 사용자라도 스크립트 오류 또는 버그로 인해 서버쪽 스크립트를 제대로 실행하지 못할 수 있습니다. 이러한 이유로, 성공적이고 강력한 ASP 응용 프로그램 개발에 있어 스크립트 오류를 찾아서 수정하는 디버깅 작업이 중요한 것입니다. 이는 응용 프로그램이 복잡할수록 더욱 그렇습니다.

Microsoft Script Debugger 도구

Microsoft® Script Debugger는 신속히 버그를 발견하고 서버쪽 스크립트를 대화형으로 테스트할 수 있는 강력한 디버깅 도구입니다. Windows Internet Explorer 3.0 이후 버전에서 사용할 수 있는 스크립트 디버거를 사용하여 다음 작업을 할 수 있습니다.

참고   디버거를 사용하면 스크립트를 보고 버그를 찾아낼 수 있지만 스크립트를 직접 편집할 수는 없습니다. 버그를 수정하려면 편집 프로그램으로 스크립트를 편집하고 변경 사항을 저장한 다음 스크립트를 다시 실행해야 합니다.

디버깅 사용

서버쪽 스크립트를 디버깅하려면 먼저 ASP 디버깅을 지원하도록 웹 서버를 구성해야 합니다. 자세한 내용은 ASP 디버깅 사용을 참조하십시오.

웹 서버 디버깅을 사용할 수 있도록 한 후에는 다음 방법 중 하나를 사용하여 스크립트를 디버깅할 수 있습니다.

스크립트 오류

서버쪽 스크립트를 디버깅하는 동안 몇 가지 형식의 오류를 발견할 수 있습니다. 이들 오류 중 일부는 스크립트가 제대로 실행되지 않거나 프로그램 실행을 중지시키거나 잘못된 결과를 반환합니다.

구문 오류

구문 오류는 잘못된 스크립트 구문으로 인해 발생하는 일반적인 오류입니다. 예를 들어, 명령의 철자가 틀리거나 인수의 수가 잘못된 경우 오류가 나타납니다. 구문 오류가 발생하면 스크립트를 실행할 수 없습니다.

런타임 오류

런타임 오류는 스크립트가 실행을 시작한 후에 불가능한 작업을 수행하려는 스크립트 명령 때문에 일어납니다. 예를 들어, 다음 스크립트에는 변수를 0으로 나누는(잘못된 산술 연산) 함수가 포함되어 있어서 런타임 오류가 발생합니다.

<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>
Result = Findanswer(15)
Document.Write ("The answer is " &Result)

Function Findanswer(x)
'이 문에서 런타임 오류가 발생합니다. 
Findanswer = x/0
End Function
</SCRIPT>

런타임 오류를 일으키는 버그를 수정해야 스크립트가 중단 없이 실행됩니다.

논리적 오류

논리적 오류는 가장 발견하기 어려운 오류입니다. 입력을 잘못하였거나 프로그램 작성 시 논리 상의 오류가 있으면 스크립트가 제대로 실행되더라도 잘못된 결과를 가져올 수 있습니다. 예를 들어, 값을 정렬하기 위해 작성한 서버쪽 스크립트의 경우 값을 비교하기 위해 <(보다 작은) 기호가 아닌 >(보다 큰) 기호를 사용하면 순서가 잘못될 수 있습니다.

오류 디버깅 기술

버그를 찾고 응용 프로그램을 테스트하는 데는 몇 가지 디버깅 기법이 있습니다.

적시(JIT) 디버깅

런타임 오류로 인해 서버쪽 스크립트 실행이 중단되면 Microsoft Script Debugger가 자동으로 시작되어 .asp 파일이 열리고 오류를 발생시킨 줄에 포인터가 표시되며 오류 메시지가 나타납니다. 이러한 적시(JIT) 디버깅으로 컴퓨터는 프로그램 실행을 더 이상 진행시키지 않고 정지시킵니다. 스크립트를 다시 실행하려면 편집 프로그램을 사용하여 오류를 수정하고 변경 사항을 저장해야 합니다.

중단점 디버깅

오류 발생 시 오류 원인을 쉽게 찾아내기 힘들 경우, 미리 중단점을 설정해 두면 편리합니다. 중단점은 스크립트의 특정 줄에서 실행을 중지시킵니다. 스크립트 중 확실하지 않은 부분에 하나 이상의 중단점을 설정한 다음 디버거를 사용해서 스크립트에 설정된 변수 또는 속성 값을 검사할 수 있습니다. 오류를 수정한 후에는 중단점을 해제하여 스크립트가 연속해서 진행되도록 합니다.

중단점을 설정하려면 스크립트 디버거에서 스크립트를 열고 실행을 중지할 행을 선택한 다음, 디버그 메뉴에서 중단점 설정/해제를 선택합니다. 그런 다음 웹 브라우저를 사용하여 다시 스크립트를 요청합니다. 중단점까지 스크립트를 실행한 후, 컴퓨터는 스크립트 디버거를 시작하여 중단점을 설정한 줄을 가리키는 포인터와 함께 스크립트를 표시합니다.

다음 문장에서 중단

경우에 따라, 다음에 실행되는 문장이 현재 .asp 파일에 없을 경우 스크립트 디버거의 다음 문장에서 중단을 사용할 수 있습니다. 예를 들어, Sales 응용 프로그램에 있는 .asp 파일에서 다음 문장에서 중단을 설정하면 Sales 응용 프로그램 또는 디버깅이 설정된 다른 응용 프로그램의 임의의 파일에서 스크립트를 실행할 경우 디버거가 실행됩니다. 따라서 다음 문장에서 중단을 설정하면 다음에 어떤 스크립트 문장을 실행하더라도 디버거가 실행됩니다.

VBScript Stop 문 디버깅

문제가 될 만한 서버쪽 스크립트의 지점 앞에 Stop 문을 삽입하여 VBScript로 작성된 서버쪽 스크립트에 중단점을 추가할 수도 있습니다. 예를 들어, 다음 서버쪽 스크립트에는 스크립트가 사용자 정의 함수를 호출하기 전에 실행을 일시 정지시키는 Stop 문이 포함되어 있습니다.

<%
  intDay = Day(Now())
  lngAccount = Request.Form("AccountNumber")
  dtmExpires = Request.Form("ExpirationDate")

  strCustomerID  =  "RETAIL" & intDay & lngAccount & dtmExpires

  '중단점을 지정합니다. 
  Stop

  '등록 구성 요소를 호출합니다. 
  RegisterUser(strCustomerID)
%>

이 스크립트를 요청하면 디버거가 시작되고 Stop 문 위치를 가리키는 포인터와 함께 .asp 파일을 표시합니다. 이 때 이러한 변수를 구성 요소로 전달하기 전에 변수에 할당된 값을 확인하도록 설정할 수 있습니다.

중요   .asp 파일을 제품화할 때는 Stop 문을 삭제하십시오.

JScript Debugger 문장 디버깅

JScript로 작성한 서버쪽 스크립트에 중단점을 추가하려면 스크립트에서 문제가 될 만한 줄 앞에 debugger 문을 삽입하십시오. 예를 들어, 다음 스크립트에는 새 값으로 루프를 돌 때마다 실행을 중단한 다음 자동으로 스크립트 디버거를 시작하게 만드는 debugger 문이 포함되어 있습니다.

<%@ LANGUAGE=JScript %>
<%
  for (var count = 1; count <= 10; count++)
  {
    var eventest = count%2
    //스크립트를 단계적으로 실행하기 위해 중단점을 지정합니다. 
    debugger
    if (eventest == 0)
          Response.Write("Even value is " + count + "<br>")
   }
%>

.asp 파일을 제품화할 때는 debugger 문을 삭제하십시오.

참고   debugger 문과 JScript break 문을 혼동하지 마십시오. break 문은 현재 실행 중인 루프를 종료할 뿐 Microsoft Script Debugger가 시작되거나 실행이 멈추지는 않습니다.

스크립트 디버깅에 관한 팁

스크립트 디버거 외에도 여러 가지 디버깅 팁을 통해 스크립트 작성 오류를 검사하는 시간을 크게 줄일 수 있습니다. 대부분의 버그는 잘못 입력된 명령이나, 변수 누락 등 명백히 확인할 수 있는 것들이지만, 일부 논리 및 실행 오류는 찾아내기가 무척 어렵습니다.

Microsoft Script Debugger에 대한 자세한 내용은 Windows Script Technologies를 참조하십시오.

©1997-2001 Microsoft Corporation. All rights reserved.