새로운 JSL 디버거를 좋아하는 5 가지 이유맞습니다. JMP 10에는 새로운 JSL 디버거가 함께 제공됩니다. 늙은 애에게 작별 인사하고 새 애인에게 인사! 블로그 게시물에서 내가 무엇을 말할 수 있는지 궁금해 할 때, JSL 스크립터로서의 삶의 방식을 생각하기 시작했습니다. 이 게시물은 몇 가지 멋진 기능을 소개하며 이후 게시물은 세부 정보를 확대합니다.
JSL 스크립팅 가이드에는 JSL 디버거에 대한 전체 설명과 시작을위한 몇 가지 간단한 예제가 있습니다. 한편, 앞으로 기대할 몇 가지 사항이 있습니다.
5. 그것은 작동합니다!
약간 까다로울 수도 있지만 이전 JSL 디버거는 기능이 너무 제한적이어서 사용하기가 어려웠습니다. 결코 사용하지 않았습니다. 이제는 Show (), Print () 및 Write ()로 코드를 자유롭게 뿌리 내린 내 습관을 포기하고 새로운 디버거를 사용하게되었습니다. 어떤 스크립트를 주석으로 남기지 않거나 여러 개의 Show ()를 삭제하는 것을 발견하기 위해서만 동료에게 스크립트를 공개하지 않는 추가 이점이 있습니다.
추가 보너스로, / * debug step * /을 디버그 할 스크립트 상단에 추가 할 필요가 없습니다. 디버그 스크립트 도구 모음 단추를 클릭 할 수 있습니다 (
) - 스크립트 실행 버튼 옆에 있습니다. 또는 편집> 디버그 스크립트를 선택합니다. 또는 스크립트 창을 마우스 오른쪽 버튼으로 클릭하고 스크립트 디버그를 선택하십시오. 또는 CONTROL-SHIFT-R (Macintosh에서는 COMMAND-SHIFT-R)을 누릅니다. 쉬운!
4. 매킨토시에서도 사용 가능합니다.

오, 행복한 하루! 이제 Windows뿐만 아니라 Macintosh에서도 JSL 스크립트를 디버깅 할 수 있습니다! 디버거는 두 플랫폼에서 모두 동일합니다. 동일한 위대한 기능, 동일한 위대한 기능. 피곤하고 오래된 디버거는 매킨토시에서도 사용할 수 없었기 때문에 내 동료 매킨토시가 이것을 환영 할 것입니다.
삼. 루프 및 사용자 작성 기능 디버깅
루프에서 작은 코드 조각을 선택하고 조각을 실행하는 날 (JSL 오류가 발생한 쉼표를 선택하지 않으려는 시도)은 끝났습니다. 여기에서 환호를들을 수 있습니다. 디버거를 통해 코드를 실행하면 반복 변수의 값이 변경 될 때마다 자동으로 업데이트되는 것을 볼 수 있습니다. 중단 점을 사용하면 작업중인 청크를 건너 뛸 수 있습니다. 중단 점에 조건을 추가하고 한 번의 클릭으로 처음 200 번의 반복을 실행 한 다음 문제가 201 번에서 시작되는 위치에 집중할 수 있습니다. 성 되풀이.
함수 디버깅 또한 쉽습니다. 더 이상 "전달 된"변수가 무엇이든간에 별도로 선언하고 함수 조각을 실행할 필요가 없습니다. 함수에 대한 스크립트를 실행하여 그 스크립트로 들어갈 수 있습니다. 디버거는 전달한 변수의 모든 값과 함수의 로컬 변수를 표시합니다.
2. 코드 블록의 스테핑, 오버 및 아웃
당신이 부르는 표현이 완벽하다는 것을 이미 알고 있습니까? 한 번의 클릭으로 표현식을 실행하고 다음 표현식에서 중지하려면 디버거에서 단계를 클릭하십시오. 당신의 기능에서 어떤 것이 잘못되어 가고있는 것이 확실합니까? 함수에 들어가고 각 표현식을 함수 내에서 한 번에 하나씩 실행하려면 [단계 안에 들어가기]를 클릭합니다. Include () 파일을 통해 한 줄씩 스테핑하는 중간 단계에 있으며 여기에 문제가 없다는 것을 알고 있습니까? Include () 다음에 오는 식의 디버깅으로 돌아가려면 포함 된 스크립트의 나머지 실행을 끝내려면 단계 아웃을 클릭하십시오.
1. 변수보기
이것은 이전 디버거에서 한 가지 였지만 사용하기가 어려웠고 제한적이었습니다. Variable-watching은 새로운 디버거의 즐거움입니다. 모든 단일 변수의 값은 전역, 로컬, 여기, 네임 스페이스의 모든 범위에 표시됩니다. 당신은 일을 할 필요가 없습니다. 항상 거기에 있습니다. 코드에 새 변수가 추가되면 해당 변수가 적절한 목록에 추가됩니다. 새 네임 스페이스를 추가하면 새 네임 스페이스 목록이 나타납니다.
수십 개의 변수를 사용하는 긴 스크립트를 작성하면 그 목록이 압도적으로 많을 수 있습니다. 보기 탭으로 넘깁니다.
당신은 눈여겨보고 싶은 몇 가지 변수 만 추가 할 수 있습니다.값이 특정 JSL 목록에 추가 될 때보고 싶으면 아래 첨자로 묶을 수 있습니다 (예 : mylist ). 감시 목록에서 범위를 지정할 수 있습니다 (예 : var 및 global : var를 동시에 볼 수 있음).변수 이름을 감시 목록에 입력 할 수 있지만 디버거의 스크립트 창에서 변수 이름을 마우스 오른쪽 단추로 클릭하고 감시 추가를 선택하는 것이 더 쉽습니다.숙박 조정 ...
이 공간에서 디버거에 대한 더 많은 게시물을 확인하십시오. 여기서 특정 기능과 사용 사례를 자세히 설명합니다. 특정 디버거 주제에 관심이 있으십니까? 의견에서 언급하고, 나는 미래의 게시물에서 그것을 언급하려고 노력할 것이다.
Dewey는 다음과 같이 썼습니다 : xcellennt ost. 나는 엄마를 상대 할 것이다 ... 듀이 쓴 :
xcellennt ost. 나는이 중 많은 것들을 다룰 것이다.
문제도 ..
John Sall은 JMP 10에 대한 반성을 제공합니다. [...] inves ... John Sall은 JMP 10에 대한 반성을 제공합니다. 쓴 :
스크립트 작성에 투자하는 [...] JMP 10에는 그 분야에서 제공 할 많은 새로운 기능이 있습니다. 새로운 JSL 디버거, JMP 로그 분할 화면 지원, 드래그 앤 드롭 편집, 향상된 애드 인 구조 및 [...]
Melanie Drake는 다음과 같이 썼습니다 : 하나 하나 스크립트를 실행합니까? 멜라니 드레이크 쓴 :
스크립트를 하나씩 실행하거나, JMP를 실행하고, JMP를 각각 종료하거나, JMP를 한 번 실행하고 스크립트를 포함하여 실행합니까? 첫 번째 경우 (스크립트 당 하나의 인스턴스)에서 show ()가 로그에 표시됩니다. 두 번째로 컨테이너 스크립트는 JMP를 종료하므로 아무 것도 볼 수 없습니다. 동료는 각 스크립트에서 로그 캡처를 사용하고 로그 캡쳐를 나중에 볼 수있는 텍스트 파일로 저장하도록 제안했습니다. 나는 대체 접근법을 아래에 가지고있다.
오류 메시지는 많이 변경되지 않았습니다.
플랫폼에 잘못된 열 참조를 보내면 스크립트가 바로 실패하고 Scriptable (플랫폼)에 도달하지 못할 것입니다. 열 참조가 좋지 않으면 Try ()를 사용하여 전체를 건너 뛸 수 있습니다. 예를 들면 :
보십시오 (plt = bivariate (x (: nonexistent_column), y (: nonexistent_column_2));
plt << do something;
// 더 많은 것들을해라.
, // else 위의 표현식 중 하나라도 실패하면 대신이 작업을 수행하십시오.
텍스트 파일 저장 ( "c : / error log.txt",
"c : \ ben의 script.jsl : 첫 번째 이변 조건의 오류",
모드 ( "추가")
)
);
텍스트 파일을 추가하기 전에 먼저 텍스트 파일을 만들어야합니다. 이와 같은 접근 방식은 첫 번째 문제를 완화하는 데 도움이 될 수 있습니다.
당신의 흥미로운 질문에 감사드립니다!
Ben은 다음과 같이 썼습니다 : 빠른 질문 - 저는 많은 스크립트를 통해 스크립트를 실행합니다 ... 벤 쓴 :
빠른 질문 - 커맨드 라인을 통해 많은 스크립트를 실행합니다. JMP 8 또는 9에서는 스크립트가 실행되지만 표시되지 않는 새로운 "기능"을 도입했습니다. 따라서 명령 줄 barfs를 통해 실행하는 스크립트가 6 에서처럼 실행됩니다. 9에서 아침에 "N col (dtab) - dtab은 데이터 테이블 참조가 아닙니다"라는 문구가 열려있는 JMP 창으로 들어가는 것과 같은 문제가 있으며 어떤 스크립트가 N col (dtab)을 호출하는지 거의 알 수 없습니다. 나는 "show ("c : \ ben 's script.jsl "을 시작 함)를 추가하려고 시도했지만, 이런 일이 발생하면 결코 나타나지 않는 것 같습니다.
또한 디버깅에 유용합니다 - 스크립트를 실행할 때의 기본 설정 - JMP는 여전히 빠져 나옵니다
"잘못된 인수 (x)에서 열을 찾을 수 없습니다"
?
( 'x'는 숫자로 표시되기도 함)
같은 것을 가졌어요.
"당신은 'Bens_column_list_variable'을 말한 코드 줄 1234의"Bens_target_data_table "테이블에서 'Bens_column_name"열을 요청했지만 해당 열은 없습니다 "
훨씬 더 유용한 오류입니다.
또한, 나는 이것이 자동으로 치명적이라고 생각하지 않으며 종종 '나쁜 열'에 대한 오류를 던지지 않는 것이 문제가됩니다. 'catch'문은 일반적으로 어딘가에 나타나야합니다.
plt = bivariate (x (: nonexistent_column), y (: nonexistent_column_2));
plt << do something;
이것이 내가 나쁜 열을 건너 뛰도록 원한다면, 나는
IsScriptable (plt);
어쨌든.
감사.
제니 M은 다음과 같이 썼다. 제니 남 쓴 :
너 락 멜!
Lee Creighton은 다음과 같이 썼습니다. 리 크레이 톤 쓴 :
디버거에서 지역 변수를 보여주는 데모를 좋아합니다.