KR102184436B1 - 저스트 마이 코드를 이용하는 자바스크립트 디버깅 기법 - Google Patents

저스트 마이 코드를 이용하는 자바스크립트 디버깅 기법 Download PDF

Info

Publication number
KR102184436B1
KR102184436B1 KR1020157025179A KR20157025179A KR102184436B1 KR 102184436 B1 KR102184436 B1 KR 102184436B1 KR 1020157025179 A KR1020157025179 A KR 1020157025179A KR 20157025179 A KR20157025179 A KR 20157025179A KR 102184436 B1 KR102184436 B1 KR 102184436B1
Authority
KR
South Korea
Prior art keywords
code
document
user
source
library
Prior art date
Application number
KR1020157025179A
Other languages
English (en)
Other versions
KR20150132161A (ko
Inventor
로버트 알란 파베자
앤드류 리차드 스터랜드
티모시 스콧 라이스
그레그 버나드 미스켈리
니킬 칸델월
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20150132161A publication Critical patent/KR20150132161A/ko
Application granted granted Critical
Publication of KR102184436B1 publication Critical patent/KR102184436B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 라이브러리 또는 오픈 소스 코드 내의 에러들 상에 착륙하지 않고서 디버거 내의 자바스크립트 코드를 통해 스텝핑하기 위한 방법들, 시스템들 및 컴퓨터 프로그램 제품들로 확장된다. 디버거는 자바스크립트 코드의 하나 이상의 세그먼트를 라이브러리 코드로서 지정하는 사용자 입력들을 수신한다. 이어서, 디버거는 자바스크립트 코드 상에서 디버깅 동작들을 수행한다. 디버깅 동작들은 자바스크립트 코드의 사용자 생성 세그먼트들 내에서만 에러들을 식별하기 위해 자바스크립트 코드를 통해 스텝핑하기 위한 스텝핑 동작을 포함하며, 사용자 생성 세그먼트들은 라이브러리 코드로서 지정되지 않은 코드에 대응한다.

Description

저스트 마이 코드를 이용하는 자바스크립트 디버깅 기법{JAVASCRIPT DEBUGGING USING JUST MY CODE}
라이브러리들 및 플러그인들의 광범위한 어레이가 자바스크립트를 위해 이용 가능하며, 이는 자바스크립트 기반 애플리케이션들의 더 쉬운 개발을 가능하게 한다. 이러한 라이브러리들은 이미 디버깅 및 최적화되었으므로, 자바스크립트 개발자는 통상적으로 라이브러리들 자체가 디버깅될 필요가 없는 것으로 가정할 것이다. 게다가, 이러한 도구들 중 다수는 압축 및 축소되며, 따라서 기본 코드가 개발자에게 불명확하고 판독 불가능하게 되어, 자바스크립트 개발자들이 이러한 제삼자 라이브러리들을 추가로 변경하는 것을 방해한다. 자바스크립트 개발자의 코드 내의 에러들은 이러한 라이브러리들 내의 에러들을 생성할 수 있으며, 이는 개발자가 라이브러리 코드를 변경할 수 없거나 변경하기를 원하지 않는 경우에 코드를 디버깅할 때 혼란을 유발할 수 있다. 대신, 개발자는 그 자신의 코드 내의 에러들을 식별하는 데에 더 많은 관심을 가질 것이다.
본 요약은 상세한 설명에서 더 후술하는 개념들의 발췌를 간단한 형태로 소개하기 위해 제공된다. 본 요약은 청구 발명 대상의 중요한 특징들 또는 본질적인 특징들을 식별하는 것을 의도하지 않으며, 청구 발명 대상의 범위를 한정하는 데 사용되는 것도 의도하지 않는다.
디버거는 자바스크립트 개발자들이 제삼자 라이브러리들을 블랙박스로서 간주하는 것을 가능하게 하며, 따라서 그러한 라이브러리들 내의 에러들은 개발자에게 식별되지 않는다. 대신, 자바스크립트 개발자는 그 자신의 코드가 실행 문제들에 대해 어떤 책임이 있는지를 빠르게 식별할 수 있다.
스크립트 호스트는 입력이 디버깅의 대상인지의 여부, 즉 코드가 개발자의 코드인지 또는 제삼자 코드인지를 식별한다. 이러한 입력들에 기초하여, 스크립트 디버거는 비대상 입력을 자동으로 배제하거나 스텝 오버(step over)한다.
효율적인 자바스크립트 디버깅 경험을 제공하기 위해, 디버깅 모니터는 본 명세서에서 "문서 경계로의 스텝"으로서 지칭되는 새로운 타입의 스텝핑 메커니즘을 제공한다. 다른 일반적인 스텝핑 메커닉들(예로서, 스텝 인투(step into), 스텝 오버, 스텝 아웃(step out))의 이용은 대상 입력들을 빠뜨리거나 원격 디버깅 동안 너무 번잡할 것이다.
본 발명의 실시예들의 상기 및 다른 장점들 및 특징들을 더 명확하게 하기 위해, 본 발명의 실시예들의 더 구체적인 설명이 첨부 도면들을 참조하여 행해질 것이다. 이러한 도면들은 본 발명의 대표적인 실시예들만을 도시할 뿐이며, 따라서 그의 범위를 한정하는 것으로 간주되지 않아야 한다는 것을 인식한다. 본 발명은 첨부 도면들을 이용하여 더 구체적이고 상세하게 기술되고 설명될 것이다. 도면들에서:
도 1은 일 실시예에 따른 디버거 도구 또는 통합 개발 환경 애플리케이션을 위한 사용자 인터페이스를 나타낸다.
도 2는 저스트 마이 코드(just-my-code) 특징을 이용하여 디버깅할 때 개발자 선호들을 선택하기 위한 사용자 인터페이스를 나타낸다.
도 3은 일 실시예에 따른, 디버거에서 브레이크-트리거링 예외를 처리하는 방법을 평가하기 위한 프로세스의 흐름도이다.
도 4는 일 실시예에 따른, 디버거의 스텝핑 거동을 처리하기 위한 프로세스를 나타내는 흐름도이다.
도 5는 어느 부분들이 개발자 코드이고 어느 부분들이 라이브러리 코드인지를 지시하는 코멘트들을 갖는 주석 달린 컴파일된 문서를 나타낸다.
도 6은 소스 맵들이 컴파일된 문서 내의 문서 경계들을 식별하는 데 사용되는 일 실시예를 나타낸다.
도 7은 저스트 마이 코드 특징을 이용하는 자바스크립트 디버깅을 위한 적절한 컴퓨팅 및 네트워킹 환경의 일례를 나타낸다.
도 1은 일 실시예에 따른 디버거 도구 또는 통합 개발 환경(IDE) 애플리케이션을 위한 사용자 인터페이스(100)를 나타낸다. 사용자 인터페이스(100)는 개발자들로 하여금 디버깅할 코드를 선택하고, 코드가 개발자에 의해 생성되었는지, 즉 "마이 코드"인지, 또는 외부 소스로부터의 코드인지를 식별하는 것을 가능하게 한다.
코드 윈도우(101)는 자바스크립트 문서와 같은 선택된 소스 파일에 대한 코드의 라인들을 표시한다. 소스 문서 윈도우(102)는 디버깅에 이용 가능한 파일들을 표시한다. 개발자는 마우스 또는 터치 패드와 같은 포인팅 장치를 이용하여 또는 메뉴 명령들을 이용하여 소스 파일들 중 하나를 선택할 수 있다. 이러한 파일들은 개발자에 의해 작성된 코드, 예컨대 코드 윈도우(101) 내에 표시된 예시적인 코드 application.js일 수 있다. 개발자에 의해 사용되지만 개발자에 의해 생성되지 않은 라이브러리들, 플러그인들 및 다른 외부 파일들도 윈도우(102) 내에 표시될 수 있다. 예를 들어, 개발자는 기존 특징을 재생성하는 것이 아니라, 그러한 특징에 대한 코드를 갖는 오픈 소스 문서를 획득하고, 새로운 애플리케이션에서 오픈 소스 문서를 사용할 수 있다.
개발자는 소스 문서 윈도우(102) 내에서 파일들을 선택하고, 예를 들어 마우스로 "우측 클릭"하거나 메뉴 명령들을 이용하여 코드 목적지 윈도우(103)를 개방할 수 있다. 개발자는 선택된 코드를 적당한 옵션의 선택에 의해 라이브러리 파일로서 또는 개발자 자신의 코드, 즉 "마이 코드"로서 지정할 수 있다. 디버거 도구 또는 IDE는 파일 지정을 이용하여, 해당 파일에 대한 코드 내의 에러들 상에 착륙할지 또는 그들을 표시할지를 결정한다.
사용자 인터페이스(100)는 또한 워치들(104), 브레이크포인트들(105) 또는 디버거 도구에 대한 이벤트들을 설정하기 위한 능력과 같은 다른 구성 옵션들을 개발자에게 제공한다. 개발자는 또한 선택된 코드에 대한 호출 스택(107)을 볼 수 있다.
도 2는 저스트 마이 코드 특징을 이용하여 디버깅할 때 개발자 선호들을 선택하기 위한 사용자 인터페이스(200)를 나타낸다. 개발자는 체크박스(201) 또는 다른 특징을 이용하여 디버깅을 "마이 코드"로서 지정된 파일들로 제한하기로 선택할 수 있다. 개발자는 디버거 도구 또는 IDE가 라이브러리 코드를 식별할 때 사용할 윈도우(202) 내의 URI들을 지정할 수 있다. 개발자는 마이 코드 URI 윈도우(203)를 이용하여, 디버거에 의해 "마이 코드"로서 간주되어야 하는 파일들을 지정할 수 있다.
사용자 인터페이스(200)는 사용자들이 라이브러리 파일들(202)로 간주되거나 "마이 코드"(203)로서 마킹될 문서들 및 파일들을 명확히 선택하는 것을 가능하게 한다. 라이브러리 파일들로서 또는 "마이 코드"로서 명확히 지정되지 않은 파일들은 와일드카드 매칭 또는 휴리스틱에 의해 그와 같이 마킹될 수 있다. 예를 들어, 특정 파일 library.js가 라이브러리 파일로서 명확히 지정되며, 와일드카드 *.min.js를 이용하여, 축소 스크립트였던 모든 자바스크립트가 또한 라이브러리 파일로서 간주되고, "마이 코드"로부터 벗어날 것이다.
개발자는 종종 그의 사용자 스크립트 코드의 디버깅 동안에 테스트 환경이 예상대로 기능하고 있는지를 결정하기 위해 테스트 환경을 검사할 수 있는 곳에 브레이크포인트들을 삽입한다. 브레이크포인트들에서, 개발자는 변수들을 검사하고, 중간에 코드의 실행 없이 다른 함수들로 스텝핑하고, 코드를 편집하여 실행을 계속하고, 예외 처리를 검토하는 것 등을 행할 수 있다. 디버거가 디버기(debuggee) 애플리케이션 내의 브레이크포인트를 만날 때, 디버기는 개발자에 의해 실행이 재개될 때까지 동결된다. 그러나, 개발자는 라이브러리 또는 오픈 소스 코드 내에서 애플리케이션을 중지하기를 원하지 않을 수 있는데, 그 이유는 그러한 라이브러리 또는 오픈 소스 코드가 이미 디버깅되었을 가능성이 있고, 따라서 디버기 애플리케이션 내의 에러들의 원인이 아닐 수 있기 때문이다. 대신, 개발자는 아마도 개발자 자신의 코드("마이 코드") 내에서 발생하는 에러들의 가장 큰 원인을 파악하기를 원한다.
개발자가 에러를 유발하고 있는 그 자신의 코드로 손수 내비게이트할 것을 요구하는 것이 아니라, 저스트 마이 코드 특징을 이용하는 디버거는 라이브러리 및 오픈 소스 코드를 자동으로 건너뛸 것이다. 디버거 도구가 통상적으로 중지를 트리거하는 예외를 만날 때, 디버거는 소스 파일이 "마이 코드"를 구성하는지를 평가한다. 그렇지 않은 경우, 디버거는, "마이 코드" URI와 매칭되는 실행 스택 상의 가장 최근 문서를 찾기 위해 실행 스택을 스캔할 것이다. 디버거는 "마이 코드" 문서를 발견하면, 디버거 내의 관련 라인을 강조할 것이다(102). "마이 코드" 문서가 발견되지 않는 경우, 예외가 발생한 문서가 표시될 수 있거나, 옵션으로서 예외가 완전히 무시될 수 있다. 모든 다른 디버거 특징들은 통상적인 방식으로 거동할 것이다. 디버거는 일반적으로 라이브러리 또는 오픈 소스 파일들에 대한 소스 코드를 표시하지 않지만, 개발자들은 또한 예를 들어 호출 스택(107)을 내비게이트함으로써 "낫 마이 코드(not my code)" 파일들을 검사하기로 선택할 수 있다.
도 3은 일 실시예에 따른, 디버거에서 브레이크-트리거링 예외를 처리하는 방법을 평가하기 위한 프로세스의 흐름도이다. 이 프로세스는 예를 들어 제1 기회 또는 사용자 미처리 예외들을 처리하는 방법을 예시한다. 단계 301에서, 디버거에서 예외가 발생한다. 단계 302에서, 디버거는 예외가 발생한 코드가 "마이 코드"로서 지정되었는지를 결정한다. 현재 코드가 "마이 코드"로서 지정된 경우, 단계 303에서, 디버거는 에러가 발생한 현재 호출 상황을 나타내는 스크립트 내의 라인을 표시한다.
단계 302에서 현재 코드가 "마이 코드"로서 지정되지 않은 경우, 단계 304에서 디버거는 호출 스택 내에서 한 레벨 아래로 자동으로 내비게이트한다. 단계 305에서, 디버거는 호출 스택이 고갈되었는지를 평가한다. 호출 스택이 고갈되지 않은 경우, 프로세스는 단계 302로 복귀하여, 디버거가 호출 스택의 이 레벨이 "마이 코드"로서 지정되었는지를 평가하고, 전술한 바와 같이 진행한다.
단계 305에서 호출 스택이 고갈된 경우, 프로세스는 단계 306으로 이동하고, 디버거는 호줄 스택의 꼭대기로 복귀한다. 단계 307에서, 디버거는 사용자가 외부 코드 내의 에러들의 검토에 관심이 있는지를 더 평가한다. 사용자는 이것을 모든 외부 에러들에 대한 또는 에러별 구성 설정 내에서 예를 들어 팝업 사용자 인터페이스 조회에 응답함으로써 지시할 수 있다. 사용자가 외부 에러들을 검토하기를 원하는 경우, 프로세스는 단계 303으로 이동하여, 디버거는 호출 스택의 꼭대기에서의 상황을 나타내는 스크립트 내의 라인에 예외 보조자를 표시한다. 그렇지 않은 경우, 단계 307에서 사용자는 옵션으로서 예외를 무시할 수 있다. 예외가 무시되는 경우, 프로세스는 단계 308로 이동하고, 정상 실행이 재개된다.
효율적인 자바스크립트 디버깅 경험을 제공하기 위해, 디버거 도구는 새로운 타입의 스텝핑 메커니즘: "문서 경계로의 스텝"을 제공한다. 프로세스 디버그 관리자(PDM)는 스크립트 엔진의 디버거와 사용자 인터페이스 간의 관계를 조정한다. PDM은 사용자 입력들을 해석하고, 그들을 스크립트 엔진의 기본 스텝 거동으로 변환한다.
디버깅을 위한 일반적인 스텝핑 패턴들은 예상되는 함수 거동에 대한 현재 프로그래밍 언어의 범위의 관계를 식별하는 "스텝 인/넥스트", "스텝 오버" 및 "스텝 아웃"이다. 문서 지향 프로그래밍 언어인 자바스크립트의 경우, 스크립트는 다수의 상이한 파일로부터 올 수 있지만, 파일들의 컴파일은 존재하지 않는다. 사용자 인터페이스(들)(100, 200)는 자바스크립트 문서 내의 코드가 "마이 코드", 라이브러리 코드 또는 소정의 다른 목적지인지를 지시하는 데 사용될 수 있다. 자바스크립트에 대해 "마이 코드"의 디버깅을 효율적으로 지원하기 위해, 새로운 스텝핑 거동이 도입된다. 개발자가 함수 호출 내로 "스텝 인"하기를 원하고, 그 함수 호출이 "마이 코드"로서 마킹되지 않은 문서 내에 존재하는 경우, 이전의 디버거들은 개발자가 "스텝 인" 명령들을 발할 것을 요구할 것이다. 개발자가 원격 디버깅하는 경우, 이것은 네트워크 상에서 매우 "번잡"해질 것이며, 실행 시간이 길 수 있다.
"문서 경계로의 스텝" 명령을 이용하여, PDM은 스크립트 엔진에게 그가 현재 문서를 떠날 때까지 계속 실행할 것으로 명한다. 이러한 특징은 개발자에게 투명하도록 디버거에 의해 자동으로 트리거될 수 있다. 이러한 기능은 다른 방향에서도 존재할 수 있으며; 사용자가 함수 호출로부터 "스텝 아웃"하기로 결정하는 경우, 호줄 함수는 "마이 코드"가 아니었을 수 있으며, 이 시점에서 사용자는 현재 실행 함수 아래의 호출 스택 내의 제1 "마이 코드" 문서 명령어에 착륙해야 한다. 이 시점에 "마이 코드" 문서가 존재하지 않는 경우, 실행이 정상적으로 재개되어야 한다. 이것은 개발자가 생성하지 않았고 디버깅 동안 관심을 갖지 않는 코드를 숨기는 효과를 갖는다.
본 발명의 실시예들은 문서 경계들을 지시하기 위해 진입 및 진출 이벤트들을 이용하여 디버깅할 때 모든 함수 본문들에 주석을 첨부하며, 이는 디버거에게 스크립트가 문서들을 전환하려고 하는 시기를 알린다.
도 4는 일 실시예에 따른, 디버거의 스텝핑 거동을 처리하기 위한 프로세스를 나타내는 흐름도이다. 이 프로세스는 문서 경계로의 스텝 기능을 지원하기 위해 기존의 디버거들에 추가될 수 있다. 단계 401에서, 개발자는 사용자 인터페이스 레벨에서 스텝 인 또는 스텝 아웃(즉, 임의의 스텝핑 액션)을 행한다. 단계 402에서, PDM은 스크립트 엔진에게 대응하는 액션을 행하도록 지시한다. 단계 403에서, 디버거는 개발자가 "스텝 인투"한 타겟 코드가 다음 코드 문장 내의 "마이 코드"인지를 평가한다. 타겟 코드가 "마이 코드"인 경우, 단계 404에서 사용자 인터페이스는 다음 중지 명령어에 디버깅 이벤트 및 코드를 표시한다.
타겟 코드가 "마이 코드"가 아닌 경우(예로서, 스크립트 엔진이 라이브러리 코드에 스텝 인하는 경우, 단계 405에서 PDM은 스크립트 엔진에게 다음 문서 경계로 스텝 아웃하라고, 즉 "문서 경계로의 스텝"을 지시한다. 단계 405에서, 스크립트 엔진은 문서 경계 이벤트를 검출할 때까지 실행 모드에 있다. 단계 406에서, 프로세스는 스크립트 실행을 디버거가 수행하도록 양보할지를 결정한다. 스크립트 실행을 양보하지 않는 경우, 단계 407에서, 스크립트는 정상적인 실행을 계속한다. 스크립트 실행을 양보할 경우, 프로세스는 단계 403으로 복귀하고, 다음 문서에 대해 전술한 바와 같이 계속한다.
따라서, 각각의 디버깅 이벤트에 대해, 디버거는 "마이 코드" 상에 착륙하는 경우에 중지할지, 또는 라이브러리 코드 또는 "마이 코드"로 라벨링되지 않은 다른 코드 상에 착륙할 경우에 문서들을 통해 스텝핑하고 정상적인 실행을 계속할지를 결정할 것이다.
다른 실시예들에서, 문서 레벨은 유용한 입도가 아닐 수 있다. 예를 들어, 개발자는 애플리케이션을 전개하기 전에 그의 자바스크립트 파일들 모두를 단일 파일로 컴파일할 수 있다. 그 시점에서, 문서 레벨은 "마이 코드"와 라이브러리 코드를 구별할 만큼 충분히 미세한 입도 계층이 아니다. 더 구체적으로, 애플리케이션이 단일 문서로 컴파일되는 경우, 문서는 단지 모든 "마이 코드" 또는 "낫 마이 코드"로서 라벨링될 수 있다.
이러한 상황을 보상하기 위해, 개발자는 주석들 또는 코드 레벨 코멘트들을 소스 문서에 추가하여 문서 경계들이 발생한 곳을 지시할 수 있다. 이것은 개발자가 코드의 어느 부분이 "마이 코드"이고 어느 부분이 "낫 마이 코드"인지에 대해 주석을 다는 것을 가능하게 할 것이다.
도 5는 어느 부분이 "마이 코드"이고 어느 부분이 "낫 마이 코드"인지를 지시하는 코멘트들을 갖는 주석 달린 컴파일된 문서를 나타낸다. 예를 들어, 소스 문서들(501-504)은 개발자에 의해 하나의 문서(505)로 컴파일될 수 있다. 문서들(501, 504)은 개발자 생성 스크립트이며, 문서들(502, 503)은 라이브러리 코드, 오픈 소스 문서들, 또는 개발자가 디버깅하기를 원하지 않는 다른 스크립트들이다. 주석들이 컴파일된 문서에 추가되어, 어디서 "마이 코드"가 시작되고(506), 어디서 라이브러리 코드가 시작되는지(507)를 지시한다. 추가적인 코멘트들(508)은 어디서 각각의 세그먼트가 종료되는지를 지시할 수 있다.
컴파일된 파일을 디버깅할 때(505), 디버거는 문서 경계들을 식별하기 위해 코멘트들(506-508)을 찾는다. 예를 들어, 라이브러리 코드 내에서 에러가 발생할 때, 디버거는 문서 경계로의 스텝 기능을 구현할 때 라이브러리 코드 종료 주석(508)을 찾는다.
도 6은 소스 맵들이 컴파일된 문서 내의 문서 경계들 및 콘텐츠를 식별하는 데 사용되는 다른 실시예를 나타낸다. 소스 맵들은 결합 및 축소된 파일(605)을 파괴된 상태들(601-604)에 맵핑하기 위한 방법을 제공한다. 게다가, 소스 맵은 결합된 파일을 TypeScript, CoffeeScript 또는 Dart와 같은 자바스크립트로 컴파일되는 다른 언어들에 맵핑하기 위한 방법을 제공한다. 소스 맵(606)은 자바스크립트가 생산을 위해 형성될 때 생성된다. 오리지널 자바스크립트 파일들(601-604)은 생산 파일(605)로 축소 및 결합된다. 소스 맵(606)은 오리지널 파일들(601-604)에 대한 정보를 유지한다. 개발자가 자바스크립트(605) 내의 소정 라인 및 열 번호를 조회할 때, 디버거는 소스 맵(606) 내에서 탐색을 행하여 오리지널 위치를 결정할 수 있다. 디버거 도구는 소스 맵(606)을 자동으로 파싱하고, 그가 축소 및 결합되지 않은 파일들(601-604)을 실행하고 있는 것처럼 보이게 할 수 있다. 소스 맵(606) 정보는 문서 경계로의 스텝 함수를 위한 문서 경계들을 결정하는 데 사용될 수 있다.
도 7은 도 1-6의 예들이 구현될 수 있는 적절한 컴퓨팅 및 네트워킹 환경(700)의 일례를 나타낸다. 컴퓨팅 시스템 환경(700)은 적절한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 이용 또는 기능의 범위에 대한 어떠한 제한도 제안하는 것을 의도하지 않는다. 본 발명은 다양한 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작한다. 본 발명과 함께 사용하기에 적합할 수 있는 공지된 컴퓨팅 시스템들, 환경들 및/또는 구성들의 예들은 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그래밍 가능 소비자 전자 장치, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 임의의 상기 시스템 또는 장치를 포함하는 분산 컴퓨팅 환경 등을 포함하지만 이에 한정되지 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령어들의 일반적인 상황에서 설명될 수 있다. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 통신 네트워크를 통해 링크되는 원격 처리 장치들에 의해 작업들이 수행되는 분산 컴퓨팅 환경들에서도 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 저장 장치들을 포함하는 로컬 및/또는 원격 컴퓨터 저장 매체들 내에 배치될 수 있다.
도 7을 참조하면, 본 발명의 다양한 양태들을 구현하기 위한 예시적인 시스템은 컴퓨터(700) 형태의 범용 컴퓨팅 장치를 포함할 수 있다. 컴포넌트들은 처리 유닛(701), 시스템 메모리와 같은 데이터 저장소(702), 및 데이터 저장소(702)를 포함하는 다양한 시스템 컴포넌트들을 처리 유닛(701)에 결합하는 시스템 버스(703)와 같은 다양한 하드웨어 컴포넌트들을 포함할 수 있지만 이에 한정되지 않는다. 시스템 버스(703)는 임의의 다양한 버스 아키텍처를 이용하는 메모리 버스 또는 메모리 제어기, 주변 장치 버스 및 로컬 버스를 포함하는 임의의 여러 타입의 버스 구조일 수 있다. 한정이 아니라 예로서, 그러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메자닌 버스로도 알려진 PCI(Peripheral Component Interconnect)를 포함한다.
처리 유닛(701)은 본 명세서에서 설명되는 본 발명의 양태들을 구현하기 위해 IDE, 자바스크립트 편집기 또는 브라우저와 같은 개발자 및 디버깅 도구들을 실행할 수 있다.
컴퓨터(700)는 통상적으로 다양한 컴퓨터 판독 가능 매체들(704)을 포함한다. 컴퓨터 판독 가능 매체들(704)은 컴퓨터(700)에 의해 액세스될 수 있는 임의의 이용 가능 매체들일 수 있으며, 휘발성 및 비휘발성 매체들뿐만 아니라 이동식 및 비이동식 매체들도 포함하지만, 전파 신호들을 포함하지 않는다. 한정이 아니라 예로서, 컴퓨터 판독 가능 매체들(704)은 컴퓨터 저장 매체들 및 통신 매체들을 포함할 수 있다. 컴퓨터 저장 매체들은 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체들을 포함한다. 컴퓨터 저장 매체들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광 디스크 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(700)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 한정되지 않는다. 통신 매체들은 통상적으로 반송파 또는 다른 전송 메커니즘과 같은 피변조 데이터 신호 내에 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체들을 포함한다. 용어 "피변조 데이터 신호"는 신호 내에 정보를 인코딩하는 방식으로 신호의 특성들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 한정이 아니라 예로서, 통신 매체들은 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체들, 및 음향, RF, 적외선 및 다른 무선 매체들과 같은 무선 매체들을 포함한다. 임의의 상기한 것들의 조합들도 컴퓨터 판독 가능 매체들의 범위 내에 포함될 수 있다. 컴퓨터 판독 가능 매체들은 컴퓨터 저장 매체들 상에 저장되는 소프트웨어와 같은 컴퓨터 프로그램 제품으로서 구현될 수 있다.
데이터 저장소 또는 시스템 메모리(702)는 판독 전용 메모리(ROM) 및 랜덤 액세스 메모리(RAM)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체들을 포함한다. 예를 들어 시동 동안 컴퓨터(700) 내의 요소들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)이 통상적으로 ROM에 저장된다. RAM은 통상적으로 처리 유닛(701)에 의해 즉시 액세스될 수 있고/있거나 처리 유닛(701) 상에서 현재 동작하고 있는 데이터 및/또는 프로그램 모듈들을 포함한다. 한정이 아니라 예로서, 데이터 저장소(702)는 운영 체제, 애플리케이션 프로그램들 및 다른 프로그램 모듈들 및 프로그램 데이터를 유지한다.
데이터 저장소(702)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체들도 포함할 수 있다. 단지 예로서, 데이터 저장소(702)는 비이동식, 비휘발성 자기 매체들로부터 판독하거나 그들에 기록하는 하드 디스크 드라이브, 이동식, 비휘발성 자기 디스크로부터 판독하거나 그에 기록하는 자기 디스크 드라이브, 및 CD ROM 또는 다른 광학 매체와 같은 이동식, 비휘발성 광 디스크로부터 판독하거나 그에 기록하는 광 디스크 드라이브일 수 있다. 예시적인 동작 환경에서 사용될 수 있는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체들은 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 반도에 RAM, 반도체 ROM 등을 포함하지만 이에 한정되지 않는다. 위에서 설명되고 도 7에 도시된 드라이브들 및 그들과 관련된 컴퓨터 저장 매체들은 컴퓨터(700)를 위한 컴퓨터 판독 가능 명령어들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터의 저장을 제공한다.
데이터 저장소(702) 및 컴퓨터 판독 가능 매체들(704)은 IDE, 자바스크립트 편집기 또는 브라우저와 같은 자바스크립트 애플리케이션들을 개발 및 디버깅하기 위한 소프트웨어 애플리케이션들을 유지할 수 있다. 게다가, 데이터 저장소(702) 및 컴퓨터 판독 가능 매체들(704)은 개발자 생성 코드(즉, "마이 코드") 및 라이브러리, 오픈 소스, 제삼자 및 다른 코드(즉, "낫 마이 코드")와 같은 자바스크립트 파일들을 유지할 수 있다. TypeScript, CoffeeScript 또는 Dart와 같은 다른 프로그래밍 언어들 내의 파일들도 저장될 수 있다.
사용자는 사용자 인터페이스(705) 또는 다른 입력 장치들, 예로서 태블릿, 전자 디지타이저, 마이크, 키보드, 및/또는 마우스, 트랙볼 또는 터치 패드로서 일반적으로 지칭되는 포인팅 장치를 통해 명령들 및 정보를 입력할 수 있다. 다른 입력 장치들은 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 게다가, 음성 입력들, 손 또는 손가락을 이용하는 제스처 입력들 또는 다른 자연 사용자 인터페이스(NUI)도 마이크, 카메라, 태블릿, 터치 패드, 글러브 또는 다른 센서와 같은 적절한 입력 장치들과 함께 사용될 수 있다. 이들 및 다른 입력 장치들은 시스템 버스에 결합되는 사용자 입력 인터페이스(705)를 통해 처리 유닛(701)에 종종 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조들에 의해 접속될 수도 있다. 사용자 인터페이스(705)는 자바스크립트 코드의 섹션들을 "마이 코드" 또는 "낫 마이 코드"로서 식별하기 위한 도구들을 개발자에게 제공할 수 있다.
모니터(706) 또는 다른 타입의 디스플레이 장치도 비디오 인터페이스와 같은 인터페이스를 통해 시스템 버스(703)에 접속된다. 모니터(706)는 터치스크린 패널 등과 통합될 수도 있다. 모니터 및/또는 터치스크린 패널은 태블릿 타입 개인용 컴퓨터에서와 같이 컴퓨팅 장치(700)가 포함된 하우징에 물리적으로 결합될 수 있다는 점에 유의한다. 게다가, 컴퓨팅 장치(700)와 같은 컴퓨터들은 출력 주변 장치 인터페이스 등을 통해 접속될 수 있는 스피커들 및 프린터들과 같은 다른 주변 출력 장치들도 포함할 수 있다.
컴퓨터(700)는 원격 컴퓨터와 같은 하나 이상의 원격 장치에 대한 논리적 접속들(707)을 이용하여 네트워킹 또는 클라우드 컴퓨팅 환경에서 동작할 수 있다. 원격 컴퓨터는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 일반 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(700)와 관련하여 전술한 요소들 중 다수 또는 모두를 포함한다. 도 7에 도시된 논리적 접속들은 하나 이상의 근거리 네트워크(LAN) 및 하나 이상의 원격 네트워크(WAN)를 포함하지만, 다른 네트워크들도 포함할 수 있다. 그러한 네트워킹 환경들은 사무실, 기업 광역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
네트워킹 또는 클라우드 컴퓨팅 환경에서 사용될 때, 컴퓨터(700)는 네트워크 인터페이스 또는 어댑터(707)를 통해 공개 또는 비공개 네트워크에 접속될 수 있다. 일부 실시예들에서는, 모뎀 또는 다른 수단이 네트워크를 통해 통신들을 설정한다. 내장형 또는 외장형일 수 있는 모뎀은 네트워크 인터페이스(707) 및 다른 적절한 메커니즘을 통해 시스템 버스(703)에 접속될 수 있다. 예를 들어 인터페이스 또는 안테나를 포함하는 무선 네트워킹 컴포넌트가 액세스 포인트 또는 피어 컴퓨터와 같은 적절한 장치를 통해 네트워크에 결합될 수 있다. 네트워킹 환경에서, 컴퓨터(700) 또는 그의 부분들과 관련하여 도시된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속들은 예시적이며, 컴퓨터들 간의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 알 수 있다.
네트워크 인터페이스(707)는 또한 원격 컴퓨터 또는 단말기 상에서 실행되는 소프트웨어 또는 코드에 대한 액세스를 제공하는 데 사용될 수 있으며, 따라서 시스템(700)을 사용하는 개발자는 원격 장치 상에서 실행되는 코드를 디버깅할 수 있다.
본 발명은 구조적 특징들 및/또는 방법 단계들에 고유한 언어로 설명되었지만, 첨부된 청구범위에서 정의되는 발명은 전술한 특정 특징들 또는 단계들로 반드시 한정되지는 않는다. 오히려, 전술한 특정 특징들 및 단계들은 청구항들을 구현하는 예시적인 형태들로서 개시된다.

Claims (20)

  1. 컴퓨터 시스템으로서,
    프로세서와,
    상기 프로세서에 결합되며, 프로그램 명령어를 저장한 메모리를 포함하되,
    상기 프로그램 명령어는 상기 프로세서에 의해 실행되는 경우, 상기 컴퓨터 시스템으로 하여금,
    복수의 소스 문서- 상기 복수의 소스 문서 중 적어도 하나의 소스 문서는 사용자 생성 코드를 포함하고, 상기 복수의 소스 문서 중 적어도 하나의 다른 소스 문서는 라이브러리 코드만을 포함함 -로부터 컴파일링된 스크립트 언어 코드 문서를 스텝핑(step through)하여, 상기 스크립트 언어 코드 문서에 에러가 존재하는지 여부를 식별하고,
    상기 에러를 야기한 특정 코드가 상기 라이브러리 코드만을 포함하는 상기 적어도 하나의 다른 소스 문서로부터의 것인 것으로 결정된 것에 기초하여, 식별된 에러가 라이브러리 코드 세그먼트에 의해 발생되었음을 결정하고,
    상기 식별된 에러가 상기 라이브러리 코드 세그먼트에 의해 발생되었다는 결정에 기초하여, 가장 최근에 실행된 사용자 생성 코드 세그먼트를 식별하기 위해 실행 스택을 스캔하며- 상기 실행 스택을 스캔하는 것은 상기 사용자 생성 코드를 포함하는 상기 적어도 하나의 소스 문서의 적어도 하나의 부분의 시작과 끝을 나타내는 주석을 상기 스크립트 언어 코드 문서 내에서 식별함으로써 상기 스크립트 언어 코드 문서 내에서 문서 경계를 찾아내는 것을 포함함 -,
    상기 찾아낸 문서 경계에 기초하여, 상기 찾아낸 문서 경계 이후에 제공된 코드 문장은 사용자 생성 코드임을 식별하고 상기 코드 문장을 디버거 사용자 인터페이스 상에 제시하게 하는
    컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 문서 경계는 상기 스크립트 언어 코드 문서에 포함된 코드 레벨 코멘트인
    컴퓨터 시스템.
  3. 제1항에 있어서,
    사용자가 상기 라이브러리 코드만을 포함하는 상기 적어도 하나의 다른 소스 문서 내의 에러를 검토하는데 관심이 있는지 여부를 결정하기 위한 평가가 수행되는
    컴퓨터 시스템.
  4. 제1항에 있어서,
    사용자 생성 코드 세그먼트 및 라이브러리 코드 세그먼트는 소스 맵에 의해 식별된 별개의 문서와 연관된
    컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 디버거 사용자 인터페이스와 스크립트 엔진의 디버거 간의 관계는 프로세스 디버그 관리자에 의해 조정되는
    컴퓨터 시스템.
  6. 제5항에 있어서,
    상기 프로세스 디버그 관리자는 사용자 입력을 상기 스크립트 엔진의 디버거의 스텝 거동(step behavior)으로 변환하는
    컴퓨터 시스템.
  7. 제5항에 있어서,
    상기 프로세스 디버그 관리자는 상기 스크립트 엔진에게 언제 실행될지를 지시하는
    컴퓨터 시스템.
  8. 제7항에 있어서,
    상기 프로세스 디버그 관리자가 상기 스크립트 엔진에게 언제 실행될지를 지시하는 것은 사용자에게 투명한(transparent to a user)
    컴퓨터 시스템.
  9. 제5항에 있어서,
    상기 프로세스 디버그 관리자는 함수 호출로부터 "스텝 아웃"할 것을 상기 스크립트 엔진에게 지시하는
    컴퓨터 시스템.
  10. 컴퓨터 시스템에서 코드를 디버깅하는 방법으로서,
    복수의 소스 문서- 상기 복수의 소스 문서 중 적어도 하나의 소스 문서는 사용자 생성 코드를 포함하고, 상기 복수의 소스 문서 중 적어도 하나의 다른 소스 문서는 라이브러리 코드만을 포함함 -로부터 컴파일링된 스크립트 언어 코드 문서를 스텝핑하여, 상기 스크립트 언어 코드 문서에 에러가 존재하는지 여부를 식별하는 단계와,
    상기 에러를 야기한 특정 코드가 상기 라이브러리 코드만을 포함하는 상기 적어도 하나의 다른 소스 문서로부터의 것인 것으로 결정된 것에 기초하여, 식별된 에러가 라이브러리 코드 세그먼트에 의해 발생되었음을 결정하는 단계와,
    상기 식별된 에러가 상기 라이브러리 코드 세그먼트에 의해 발생되었다는 결정에 기초하여, 가장 최근에 실행된 사용자 생성 코드 세그먼트를 식별하기 위해 실행 스택을 스캔하는 단계- 상기 실행 스택을 스캔하는 단계는 상기 사용자 생성 코드를 포함하는 상기 적어도 하나의 소스 문서의 적어도 하나의 부분의 시작과 끝을 나타내는 주석을 상기 스크립트 언어 코드 문서 내에서 식별함으로써 상기 스크립트 언어 코드 문서 내에서 문서 경계를 찾아내는 것을 포함함 -와,
    상기 찾아낸 문서 경계에 기초하여, 상기 찾아낸 문서 경계 이후에 제공된 코드 문장은 사용자 생성 코드임을 식별하고 상기 코드 문장을 디버거 사용자 인터페이스 상에 제시하는 단계를 포함하는
    디버깅 방법.
  11. 제10항에 있어서,
    상기 문서 경계는 상기 스크립트 언어 코드 문서에 포함된 코드 레벨 코멘트인
    디버깅 방법.
  12. 제10항에 있어서,
    사용자가 상기 라이브러리 코드만을 포함하는 상기 적어도 하나의 다른 소스 문서 내의 에러를 검토하는데 관심이 있는지 여부를 결정하기 위한 평가가 수행되는
    디버깅 방법.
  13. 제10항에 있어서,
    사용자 생성 코드 세그먼트 및 라이브러리 코드 세그먼트는 소스 맵에 의해 식별된 별개의 문서와 연관된
    디버깅 방법.
  14. 제10항에 있어서,
    상기 주석은 스크립트가 문서들 간에 전환되는 시기를 나타내는
    디버깅 방법.
  15. 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행가능한 컴퓨터 실행가능 명령어를 저장한 하나 이상의 하드웨어 저장 장치로서,
    상기 컴퓨터 실행가능 명령어는 상기 컴퓨팅 시스템으로 하여금 적어도,
    복수의 소스 문서- 상기 복수의 소스 문서 중 적어도 하나의 소스 문서는 사용자 생성 코드를 포함하고, 상기 복수의 소스 문서 중 적어도 하나의 다른 소스 문서는 라이브러리 코드만을 포함함 -로부터 컴파일링된 스크립트 언어 코드 문서를 스텝핑하여, 상기 스크립트 언어 코드 문서에 에러가 존재하는지 여부를 식별하고,
    상기 에러를 야기한 특정 코드가 상기 라이브러리 코드만을 포함하는 상기 적어도 하나의 다른 소스 문서로부터의 것인 것으로 결정된 것에 기초하여, 식별된 에러가 라이브러리 코드 세그먼트에 의해 발생되었음을 결정하고,
    상기 식별된 에러가 상기 라이브러리 코드 세그먼트에 의해 발생되었다는 결정에 기초하여, 가장 최근에 실행된 사용자 생성 코드 세그먼트를 식별하기 위해 실행 스택을 스캔하며- 상기 실행 스택을 스캔하는 것은 상기 사용자 생성 코드를 포함하는 상기 적어도 하나의 소스 문서의 적어도 하나의 부분의 시작과 끝을 나타내는 주석을 상기 스크립트 언어 코드 문서 내에서 식별함으로써 상기 스크립트 언어 코드 문서 내에서 문서 경계를 찾아내는 것을 포함함 -,
    상기 찾아낸 문서 경계에 기초하여, 상기 찾아낸 문서 경계 이후에 제공된 코드 문장은 사용자 생성 코드임을 식별하고 상기 코드 문장을 디버거 사용자 인터페이스 상에 제시하게 하는
    하드웨어 저장 장치.
  16. 제15항에 있어서,
    상기 문서 경계는 상기 스크립트 언어 코드 문서에 포함된 코드 레벨 코멘트인
    하드웨어 저장 장치.
  17. 제15항에 있어서,
    사용자가 상기 라이브러리 코드만을 포함하는 상기 적어도 하나의 다른 소스 문서 내의 에러를 검토하는데 관심이 있는지 여부를 결정하기 위한 평가가 수행되는
    하드웨어 저장 장치.
  18. 제15항에 있어서,
    사용자 생성 코드 세그먼트 및 라이브러리 코드 세그먼트는 소스 맵에 의해 식별된 별개의 문서와 연관된
    하드웨어 저장 장치.
  19. 제18항에 있어서,
    상기 소스 맵은 문서 경계 및 콘텐츠를 식별하는
    하드웨어 저장 장치.
  20. 제18항에 있어서,
    상기 디버거 사용자 인터페이스와 스크립트 엔진 디버거 간의 관계는 프로세스 디버그 관리자에 의해 조정되는
    하드웨어 저장 장치.
KR1020157025179A 2013-03-15 2014-03-13 저스트 마이 코드를 이용하는 자바스크립트 디버깅 기법 KR102184436B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/831,801 US10664384B2 (en) 2013-03-15 2013-03-15 Javascript debugging using just my code
US13/831,801 2013-03-15
PCT/US2014/025198 WO2014151201A1 (en) 2013-03-15 2014-03-13 Javascript debugging using just my code

Publications (2)

Publication Number Publication Date
KR20150132161A KR20150132161A (ko) 2015-11-25
KR102184436B1 true KR102184436B1 (ko) 2020-11-30

Family

ID=50628934

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157025179A KR102184436B1 (ko) 2013-03-15 2014-03-13 저스트 마이 코드를 이용하는 자바스크립트 디버깅 기법

Country Status (6)

Country Link
US (1) US10664384B2 (ko)
EP (1) EP2972882B1 (ko)
JP (1) JP6543609B2 (ko)
KR (1) KR102184436B1 (ko)
CN (1) CN105164648B (ko)
WO (1) WO2014151201A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997049B1 (en) * 2010-05-21 2015-03-31 Cadence Design Systems, Inc. Method and system for debugging of compiled code using an interpreter
US9977661B2 (en) * 2013-06-28 2018-05-22 Tencent Technology (Shenzhen) Company Limited Method and system for generating a user interface
US10003499B2 (en) * 2015-09-09 2018-06-19 International Business Machines Corporation Client-configured server class tracing to a configurable threshold
US10289536B2 (en) * 2016-08-31 2019-05-14 Synopsys, Inc. Distinguishing public and private code in testing environments
US10162731B2 (en) 2017-01-23 2018-12-25 International Business Machines Corporation Conditional breakpoint on call stack during debugging at runtime
US20180210713A1 (en) * 2017-01-24 2018-07-26 Salesforce.Com, Inc. Methods and systems for using cross repositories
US11392482B2 (en) 2019-01-03 2022-07-19 Microsoft Technology Licensing, Llc Data breakpoints on certain kinds of functions
US11983094B2 (en) 2019-12-05 2024-05-14 Microsoft Technology Licensing, Llc Software diagnostic context selection and use
US11748460B2 (en) * 2020-04-27 2023-09-05 Imperva, Inc. Procedural code generation for challenge code
CN113031932B (zh) * 2021-03-11 2023-10-20 腾讯科技(深圳)有限公司 项目开发方法、装置、电子设备及存储介质
CN114625660A (zh) * 2022-03-22 2022-06-14 阿里巴巴(中国)有限公司 调试方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002196950A (ja) 2000-12-25 2002-07-12 Toshiba Corp デバッグシステム
JP2003323318A (ja) 2002-05-01 2003-11-14 Seiko Epson Corp 特殊名付き関数によるソフトウェア区切り点の実行装置及びその方法
US20040172623A1 (en) 2003-03-01 2004-09-02 Bea Systems, Inc. Systems and methods for multi-view debugging environment
JP2004326789A (ja) 2003-04-21 2004-11-18 Microsoft Corp ジャストマイコード型のデバッグ方法
US20090210862A1 (en) * 2004-09-17 2009-08-20 Sun Microsystems, Inc. Intelligent computer program debugger, and system and method for implementing the same

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819093A (en) * 1995-03-03 1998-10-06 Sun Microsystems, Inc. System and method for a distributed debugger for debugging distributed application programs
US6065035A (en) * 1996-06-13 2000-05-16 Microsoft Corporation Method and system for procedure boundary detection
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
CA2205096C (en) * 1997-05-09 2001-10-09 Ibm Canada Limited-Ibm Canada Limitee A system for remote debugging of client/server applications
US6061518A (en) 1997-11-25 2000-05-09 International Business Machines Corporation Data processing system and method for debugging a JavaScript program
US7353163B2 (en) * 1999-04-27 2008-04-01 Transitive Limited Exception handling method and apparatus for use in program code conversion
US7165243B1 (en) * 1999-06-25 2007-01-16 Sun Microsystems, Inc. Multi-lingual tag extension mechanism
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
JP2004013190A (ja) * 2002-06-03 2004-01-15 Matsushita Electric Ind Co Ltd ソフトウエア開発環境、シミュレータ及び記録媒体
US7213123B2 (en) 2002-10-24 2007-05-01 International Business Machines Corporation Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture
US7685570B2 (en) * 2003-06-09 2010-03-23 Microsoft Corporation Error/exception helper
US7730460B1 (en) 2004-06-18 2010-06-01 Apple Inc. Code execution visualization using software fingerprinting
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7984220B2 (en) * 2004-09-02 2011-07-19 International Business Machines Corporation Exception tracking
US7698692B1 (en) * 2005-11-10 2010-04-13 Sun Microsystems, Inc. Preparing a binary file for future instrumentation
US8087002B2 (en) 2006-04-04 2011-12-27 Tibco Software Inc. Method and system for providing a visual debugger for an interpreted statistical language
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
US8225286B2 (en) 2006-05-23 2012-07-17 Microsoft Corporation Debugging interpreted input
US8429613B2 (en) 2006-10-31 2013-04-23 Microsoft Corporation Stepping and application state viewing between points
US8196107B2 (en) 2008-06-19 2012-06-05 Microsoft Corporation Simulating stepping through interpreted code
US9632909B2 (en) 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging
US8595702B2 (en) 2009-03-13 2013-11-26 Microsoft Corporation Simultaneously displaying multiple call stacks in an interactive debugger
CN102053906A (zh) 2009-10-30 2011-05-11 国际商业机器公司 用于收集程序运行时信息的系统和方法
US8640104B2 (en) 2009-12-08 2014-01-28 International Business Machines Corporation Computer method and apparatus for debugging in a dynamic computer language
US9262137B2 (en) 2010-05-27 2016-02-16 Salesforce.Com, Inc. Adding directives for versions of javascript files directly into source code in a multi-tenant database environment
US8910148B2 (en) * 2010-07-29 2014-12-09 International Business Machines Corporation Packaging an application with plurality of libraries
US8397218B2 (en) 2010-10-19 2013-03-12 International Business Machines Corporation Step granularity selection in a software debugger
US8495590B2 (en) * 2011-06-10 2013-07-23 International Business Machines Corporation User-specific software debugging
US20130055205A1 (en) * 2011-08-23 2013-02-28 Semmle Limited Filtering source code analysis results
US9135147B2 (en) 2012-04-26 2015-09-15 International Business Machines Corporation Automated testing of applications with scripting code
US8914776B2 (en) 2012-05-17 2014-12-16 Microsoft Corporation Assisting development tools through inserted code statements
US9436452B2 (en) * 2012-11-12 2016-09-06 Keysight Technologies, Inc. Method for enforcing language subsets
US20140201709A1 (en) 2013-01-15 2014-07-17 Martin Carl Euerle JavaScript™ Deployment Build Tool for software code that uses an object literal to define meta data and system code.
US9052980B2 (en) * 2013-02-20 2015-06-09 Bmc Software, Inc. Exception based quality assessment
US20140013306A1 (en) 2013-04-20 2014-01-09 Concurix Corporation Computer Load Generator Marketplace
US9424163B2 (en) 2014-01-15 2016-08-23 Microsoft Technology Licensing, Llc Exception and debugging behaviors for JavaScript debugging using just my code
US9239774B2 (en) 2014-01-15 2016-01-19 Microsoft Technology Licensing, Llc Classification of JavaScript code for debugging using just my code
CN104375940A (zh) 2014-11-28 2015-02-25 浪潮电子信息产业股份有限公司 一种对javaScript文件的调试方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002196950A (ja) 2000-12-25 2002-07-12 Toshiba Corp デバッグシステム
JP2003323318A (ja) 2002-05-01 2003-11-14 Seiko Epson Corp 特殊名付き関数によるソフトウェア区切り点の実行装置及びその方法
US20040172623A1 (en) 2003-03-01 2004-09-02 Bea Systems, Inc. Systems and methods for multi-view debugging environment
JP2004326789A (ja) 2003-04-21 2004-11-18 Microsoft Corp ジャストマイコード型のデバッグ方法
US20090210862A1 (en) * 2004-09-17 2009-08-20 Sun Microsystems, Inc. Intelligent computer program debugger, and system and method for implementing the same

Also Published As

Publication number Publication date
US10664384B2 (en) 2020-05-26
EP2972882B1 (en) 2019-12-04
KR20150132161A (ko) 2015-11-25
US20140282417A1 (en) 2014-09-18
JP6543609B2 (ja) 2019-07-10
EP2972882A1 (en) 2016-01-20
CN105164648A (zh) 2015-12-16
WO2014151201A1 (en) 2014-09-25
CN105164648B (zh) 2019-09-03
JP2016511497A (ja) 2016-04-14

Similar Documents

Publication Publication Date Title
KR102184436B1 (ko) 저스트 마이 코드를 이용하는 자바스크립트 디버깅 기법
US9239774B2 (en) Classification of JavaScript code for debugging using just my code
US9424163B2 (en) Exception and debugging behaviors for JavaScript debugging using just my code
US10761964B2 (en) Object monitoring in code debugging
JP4420968B2 (ja) コマンディングのために方法及びコンピュータ可読媒体
US20160357519A1 (en) Natural Language Engine for Coding and Debugging
US8429613B2 (en) Stepping and application state viewing between points
US9317257B2 (en) Folded views in development environment
US10191832B2 (en) Multi-language playback framework
US8797338B2 (en) Platform agnostic screen capture tool
CN106844181B (zh) 用于记录用户行为的方法、系统及移动终端
US9459989B2 (en) Method and apparatus for reverse debugging source code using causal analysis
US9009678B2 (en) Software debugging with execution match determinations
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
US9117020B2 (en) Determining control flow divergence due to variable value difference
EP3195115A1 (en) Code development tool with multi-context intelligent assistance
JP7426493B2 (ja) ソフトウェア開発の補助処理方法、機器、電子機器、記憶媒体及びプログラム
Kulesovs Automated Testing of iOS Apps: tTap Extension for Apple UIAutomation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant