'Server-Side)'에 해당되는 글 1건

  1. 2009.07.09 웹사이트 개발용 디버깅 컨트롤 - iDebugX (Client, Server-Side)
반응형


사용환경
------------------------------------------------------------
OS: Windows 계열
웹브라우저: MS Internet Explorer 거의 모든 버전
스크립트: JavaScript, VBScript 등

오랜만에 자작 프로그램(iDebugX) 올려봅니다.
프로젝트에 JSP로 개발하면서 Server-side와 Client-side의 디버깅 컨트롤을 각각 만들었습니다.
JSP용 서버 사이드는 정리되면 올리도록 하지요..
클라이언트 사이드 컨트롤은 개발언어에 관계없이 사용할 수 있습니다.

뭐하는데 사용하는 넘인가 하면요...
개발시 웹페이지에서 변수값 등을 확인하기 위해서 alert() 함수를 많이 사용할 겁니다.
사용 후 다시 지워야하고, 나중에 버그 발생시 값 확인하려면 또다시 alert()를 사용해야 하는 경우가 많을 겁니다.
iDebugX는 OutputDebugString() API를 호출하므로 alert()처럼 사용자에게 직접적으로 보여주지는 않습니다.
디버그 뷰어를 실행해서만 볼 수 있습니다.

예를 봅시다..(이 예제를 테스트하기 위해서는 iDebug.ocx를 윈도우에 등록해야 됩니다. 방법은 아래 참조)

debug.js (javascript)
<script type="text/javascript">
<!--
        // HTML 페이지에 디버그 컨트롤 삽입
        function SetDebugMode()
        {
                var iDebug = "<OBJECT id=idbg classid='clsid:A7E78F01-4566-4A90-87EC-01EEF2D1344A'><param name='header' value='::'></<param name='UseDialogBox' value=false></OBJECT>";
                document.writeln(iDebug);
        }
 
        SetDebugMode();
 
        // 디버그 컨트롤 설치 여부 검사
        function Installed_iDebugX()
        {
                try
                {
                        return (typeof(document.all("idbg"))!="undefined" & document.all("idbg").object != null & idbg.installed());
                }
                catch(e)
                {
                }
        }

        // 디버그 메시지 출력
        function OutputDebugString(msg)
        {
                if (Installed_iDebugX())
                        idbg.OutputDebugString(msg);
        }
 
        // 디버그 메시지 대화상자 표시
        function ShowDebugString(msg)
        {
                        if (Installed_iDebugX())
                                idbg.ShowDebugString(msg);
        }
</script>
-->


사용 예제(javascript)
<SCRIPT language='javascript' type='text/javascript' src='./debug.js'></SCRIPT>
<SCRIPT language='javascript'>
        ....
        ....
    OutputDebugString("변수 user_id:" + user_id);
        ....
        ....
</SCRIPT>
</HTML>


위 예제처럼 하면 디버그 뷰어에 "::변수 user_id:test"라는 문자열이 출력됩니다.(user_id가 test일 경우)
태그의 PARAM "UseDialogBox"를 true로 설정하면 alert()처럼 대화상자로 나타나게 됩니다.

alert()처럼 스크립트 실행을 중단시키지 않으며 사용자(고객)는 디버그 메시지를 볼 수 없습니다.
사용자에게는 iDebug.ocx를 배포할 필요는 없습니다.
iDebugX는 iDebugX가 윈도우에 등록된 클라이언트에서만 동작됩니다.

메소드
-------------------------------------------------------------------
About(): 도움말 표시
OutputDebugString(msg: string): 디버그 메시지 출력(디버그뷰어에)
ShowDebugString(msg: string): 디버그 메시지 출력(대화상자로)

속성
-------------------------------------------------------------------
header: 디버그 메시지 앞에 출력할 문자열
UseDialogBox: OutputDebugString()를 ShowDebugString()와 같은 동작을 하게 할 것인지의 여부

파라미터
-------------------------------------------------------------------
copyright: copyright 표시
header, UseDialogBox: 속성 참고

---------------------------------
Server-Side (PHP에서 사용)
---------------------------------
<php?
        $user = 'guest';
        $idbg = new COM('iDebug.iDebugX');
        $idbg->header = "::";
        $idbg->OutputDebugString('변수 $user=' . $user);
?>

PHP용은 ShowDebugString(), About()은 사용할 수 없습니다.

참고: 여러 프로그램들이 OutputDebugString() API를 사용하기 때문에 디버그 뷰어에 자신이 호출하지 않은 문자열이 나타날 수도 있습니다. 이때 디버그 뷰어에서 필터 기능을 사용하면 자신의 메시지만 볼 수 있습니다.

[다운로드]

디버그 뷰어 다운로드 - http://download.sysinternals.com/Files/DebugView.zip

iDebug.ocx 윈도우에 등록하는 법 - cmd에서 "regsvr32 C: estiDebug.ocx" 입력 후 엔터
iDebug.ocx 윈도우에 등록 해제 하는 법 - cmd에서 "regsvr32 /u C: estiDebug.ocx" 입력 후 엔터
Posted by 1010