UI가 넥사크로인 프로젝트를 진행하다 보면
1. 고객은 웹브라우저에서 프로그램을 실행하고,
2. 개발자는 로컬에서 ①넥사크로런타임브라우저 또는 ②웹브라우저에서 프로그램을 실행한다.
① 런타임
- 전용 브라우저에서 실행했을 때 마우스 우클릭 시, View Source 등을 지원하는 장점이 있다.
② 웹브라우저
- 고객과 동일한 환경에서 실행할 수 있는 장점이 있다.(css 등)
- 그리고 무엇보다도 브라우저의 강력한 디버깅 기능을 사용할 수 있다.
이 글에서는 브라우저에서의 디버깅 방법을 아래 순서로 설명한다.
1. 넥사크로 스튜디오에서의 디버깅
1-1. console.log 활용
1-2. debugger 활용
2. 브라우저에서의 디버깅
2-1. 개발자도구 엘리먼트탭의 요소선택으로 scope 접근
2-2. 소스탭에서 중단점 지정
2-3. 소스탭에서 포착되지 않은, 포착된 예외에서 일시중지
1. 넥사크로 스튜디오에서의 디버깅
1-1. console.log 활용
① 보통은 추적 로그를 남기는 넥사크로 지원 메소드인 trace를 사용하며, 파라미터는 문자열이다.
② 하지만, trace도 console.log로 구현되어 있음을 확인할 수 있다.
③ 런타임에서 trace로 dataset을 추적하면, 아래와 같이 toString() 메소드가 실행된 결과물이 문자열로 표시된다.
④ 웹환경에서 console.log로 dataset을 출력하면, 아래와 같이 객체가 출력됨을 알 수가 있다. 이때 브라우저 개발자 도구의 강력한 기능을 활용할 수가 있는데, 표시된 객체에 마우스 우클릭하여 '전역 변수로 object 저장'을 클릭하면, 콘솔창에서 그대로 활용 할 수 있다.
☞ 런타임에서 trace 보다는, 웹환경에서 console.log를 활용해 보자
1-2. debugger 활용
① 넥사크로 스튜디오에서는 debugger 가 키워드로 표시되긴 하지만 정작 제너레이트(컴파일)가 되지 않는다.
② 그냥 우회해서 eval("debugger;"); 로 하면 정상적으로 제너레이트도 되고, 브라우저에서 디버깅도 활용할 수 있다.
(런타임에서 eval("debugger;");가 실행 되었을 때는 아무런 반응도 하지 않는다..)
☞ javascript debugger; 를 활용해 보자 (debugger는 구글링을 통해 더 많고 유익한 정보를 얻을 수 있다.)
2. 브라우저에서의 디버깅
2-1. 개발자도구 엘리먼트탭의 요소선택으로 scope 접근
① 개발자도구의 엘리먼트(요소) 탭에서 html의 Div 태그를 통해 scope를 추적할 수 있다.
② 넥사크로 17 예시
nexacro.getApplication()는 최상위 객체이며 div id를 적당하게 붙여 this scope 내부로 접근이 가능하다.
(최상위 객체에는 Global Dataset이 붙어 있다. ex) nexacro.getApplication().gds_menu 등등)
③ 넥사크로 14 예시
application는 최상위 객체이며 div id를 적당하게 붙여 this scope 내부로 접근이 가능하다.
2-2. 소스탭에서 중단점 지정
① 넥사크로 프로젝트 폴더구조를 파악하고 있다면 소스탭에서 파일을 찾아, 중단점을 지정하여 디버깅을 진행할 수 있다.
2-3. 소스탭에서 포착되지 않은, 포착된 예외에서 일시중지
① 스크립트 오류가 발생한다면 예외발생하는 시점에 중단점을 걸 수 있다.
마치며
1. 웹 환경에서 실행되는 넥사크로 프로젝트는 결국엔 자바스크립트다.
2. 브라우저의 개발자도구는 강력하다.(넥사크로 스튜디오도 자체 디버깅 기능을 지원하긴 하지만..)
① console.log
② debugger
③ 중단점(break point) 등을 활용하면 더 나은 디버깅을 할 수 있다
(구글링을 통해 더 많고 유익한 정보를 얻을 수 있다.)
3. 넥사크로 이외의 다른 상용 툴도 브라우저 디버깅 기능을 적극 활용 할 수 있다.
① eXBuilder6
② WebSquare
③ SmartClient 등
'JAVA SCRIPT > NEXACRO' 카테고리의 다른 글
[NEXACRO] typeof 가 모두다 'object' ? (0) | 2025.01.17 |
---|---|
[NEXACRO] 넥사크로 불편요소 (0) | 2024.11.08 |
[JAVA SCRIPT] 넥사크로 eval 회피(브라켓 표기) (1) | 2023.10.26 |
[JAVA SCRIPT] Number 함수의 동작 방식(객체의 형변환)(nexacro.Decimal에 대한 고찰) (0) | 2023.08.30 |
[JAVA SCRIPT] findRowExpr(VLOOKUP) 구현하기 (0) | 2022.02.14 |