KR20220002690A - 미니프로그램을 디버깅하는 방법, 장치, 전자장비, 저장 매체 및 컴퓨터 프로그램 - Google Patents

미니프로그램을 디버깅하는 방법, 장치, 전자장비, 저장 매체 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20220002690A
KR20220002690A KR1020217041768A KR20217041768A KR20220002690A KR 20220002690 A KR20220002690 A KR 20220002690A KR 1020217041768 A KR1020217041768 A KR 1020217041768A KR 20217041768 A KR20217041768 A KR 20217041768A KR 20220002690 A KR20220002690 A KR 20220002690A
Authority
KR
South Korea
Prior art keywords
debugging
module
target
mini
program
Prior art date
Application number
KR1020217041768A
Other languages
English (en)
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
Priority claimed from CN202011282569.3A external-priority patent/CN112214416B/zh
Application filed by 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 filed Critical 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드
Publication of KR20220002690A publication Critical patent/KR20220002690A/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
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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
    • G06F11/3644Software debugging by instrumenting at runtime
    • 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/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Abstract

제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하는 것, 미니프로그램을 실행하되, 미니프로그램이 각 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단하는 것, 및 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성하는 것을 포함하는 미니프로그램을 디버깅하는 방법을 개시한다. 또한, 미니프로그램을 디버깅하는 장치, 전자장비, 저장 매체 및 컴퓨터 프로그램 제품을 더 개시한다.

Description

미니프로그램을 디버깅하는 방법, 장치, 전자장비 및 저장 매체
본 출원은 2020년 11월 16일에 출원한 출원번호가 202011282569.3인 중국 특허출원의 우선권을 주장하고, 그 전체 내용은 본 명세서에 참조로 포함된다.
본 출원은 컴퓨터 기술분야에 관한 것으로서, 구체적으로는, 컴퓨터 통신 및 소프트웨어 디버깅 기술에 관한 것이다. 보다 구체적으로는, 본 출원은 미니프로그램을 디버깅하는 방법, 장치, 전자장비 및 저장 매체를 제공한다.
미니프로그램은 소프트웨어에 내장되어 다운로드 및 설치할 필요 없이 사용할 수 있는 애플리케이션을 말한다. 미니프로그램의 경우에도, 실행되기 전에 미니프로그램에 존재하는 신택스 또는 로직 에러를 수정하기 위해 미니프로그램을 디버깅할 필요가 있다.
미니프로그램을 디버깅함에 있어서 가장 중요한 부분은 브레이크 포인트 디버깅을 진행하는 것이다. 즉, 코드의 타겟 위치에서 미니프로그램의 실행을 중단하고 데스크톱단의 디버깅 패널에 변수 세부사항을 표시함으로써, 사용자가 변수 세부사항에 기초하여 미니프로그램을 수정할 수 있도록 한다. 하지만, 브레이크 포인트 디버깅을 실행할 경우, 미니프로그램은 중단된 상태이므로, 디버깅 툴의 디버깅 명령에 응답할 수 없어, 디버깅이 어렵고 디버깅 효율성이 낮으며 디버깅 효과도 좋지 않다.
본 출원은 미니프로그램을 디버깅하는 방법, 장치, 전자장비 및 저장 매체를 제공한다.
제1 측면에 의하면, 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 방법에 있어서, 제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하는 것, 미니프로그램을 실행하되, 미니프로그램이 각 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단하는 것, 및 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성하는 것을 포함하는 미니프로그램을 디버깅하는 방법을 제공한다.
제2 측면에 의하면, 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 방법에 있어서, 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 지시하는 제1 디버깅 명령을 송신하는 것, 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신하는 것, 및 타겟 테스트 모듈의 디버깅 결과를 수신하는 것을 포함하는 미니프로그램을 디버깅하는 방법을 제공한다.
제3 측면에 의하면, 미니프로그램을 디버깅하는 장치에 있어서, 제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하는 선택 모듈, 미니프로그램을 실행하되, 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단하는 제1 중단 모듈, 및 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성하는 제1 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 장치를 제공한다.
제4 측면에 의하면, 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 장치에 있어서, 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하도록 지시하는 제1 디버깅 명령을 송신하는 제1 송신 모듈, 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신하는 제2 송신 모듈, 및 타겟 테스트 모듈의 디버깅 결과를 수신하는 제1 수신 모듈을 포함하는 미니프로그램을 디버깅하는 장치를 제공한다.
제5 측면에 의하면, 적어도 하나의 프로세서, 및 적어도 하나의 프로세서에 통신가능하게 연결되는 메모리를 포함하는 전자장비에 있어서, 메모리에는 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어 있고, 명령은 적어도 하나의 프로세서에 의해 실행됨으로써, 본 출원에 의해 제공되는 미니프로그램을 디버깅하는 방법을 실행하도록 하는 전자장비를 제공한다.
제6 측면에 의하면, 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독가능 저장 매체에 있어서, 컴퓨터 명령은 컴퓨터 명령으로 하여금, 본 출원에 의해 제공되는 미니프로그램을 디버깅하는 방법을 실행하도록 하는 비일시적 컴퓨터 판독가능 저장 매체를 제공한다.
제7 측면에 의하면, 컴퓨터 프로그램을 포함한 컴퓨터 프로그램 제품에 있어서, 컴퓨터 프로그램이 컴퓨터프로세서에 의해 실행될 경우, 상기와 같은 방법을 구현하는 컴퓨터 프로그램 제품을 제공한다.
본 명세서에 기술된 내용은 그 목적이 본 출원의 실시예의 핵심 또는 중요한 특징을 지정하기 위한 것이 아니고, 또한, 본 출원의 범위는 이에 한정되지 않음을 이해하여야 한다. 본 출원의 다른 특징들은 하기 설명으로부터 용이하게 이해할 수 있을 것이다.
첨부된 도면은 본 기술방안을 보다 쉽게 이해하도록 하기 위한 것이고, 본 출원은 이에 한정되지 않는다.
도 1은 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 방법 및 장치를 응용할 수 있는 예시적인 시스템 구성이다.
도 2는 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 3은 본 출원의 일 실시예에 따른 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하는 방법의 흐름도이다.
도 4는 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 5는 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 6은 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 7은 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 8은 본 출원의 일 실시예에 따른 시뮬레이션 환경에서 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 9는 본 출원의 일 실시예에 따른 리얼 환경에서 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 10은 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 장치의 블록도이다.
도 11은 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 장치의 블록도이다.
도 12는 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 전자장비의 블록도이다.
이하, 도면을 참조하여 본 출원의 예시적인 실시예들을 설명한다. 쉽게 이해할 수 있도록, 본 출원의 실시예들의 세부사항을 포함하게 되는데, 이들은 단지 예시적인 것에 불과하다. 따라서, 당업자라면 본 개시의 범위 및 취지를 벗어나지 않으면서 본 출원의 실시예에 대해 여러가지 변경 및 수정이 이루어질 수 있음을 이해할 것이다. 또한, 명확성과 간결성을 위해 하기의 설명에 있어서, 공지된 기능 및 구성에 대한 설명은 생략한다.
미니프로그램은 다양한 OS 플랫폼(예를 들어, Android、IOS,Web브라우저 등)에서 실행될 수 있고, OS 플랫폼과 데스크탑단의 디버깅 툴 사이의 인터액션에는 일부 제한이 있을 수 있다. 예를 들어, IOS 운영체제의 제한으로 인해, IOS 단말은 데스크탑단의 디버깅 툴과 직접 통신할 수 없다. 즉, 단말단 실행 환경의 코드 브레이크 포인트 및 디버깅 기능을 구현할 수 없다.
본 출원의 실현 과정에, 발명자는 데스크탑단의 개발 툴에서 미니프로그램의 실행을 시뮬레이션하고, 그 다음, 디버깅 프로그램과 시뮬레이션한 미니프로그램 사이의 통신을 통해 미니프로그램의 디버깅을 완성할 수 있다는 것을 발견하였다.
하지만, 리얼 실행 환경에서든 시뮬레이션 실행 환경에서든 미니프로그램을 디버깅할 경우, 디버깅 툴과 미니프로그램을 실행하는 프로세스사이의 명령 인터액션이 필요한다. 그런데, 미니프로그램의 디버깅에 있어서 가장 주요한 것은 브레이크 포인트 디버깅이고, 브레이크 포인트 디버깅을 실행할 경우, 미니프로그램은 중단된 상태이므로, 디버깅 툴의 명령에 응답할 수 없어, 디버깅이 어렵고 디버깅 효율성이 낮으며 디버깅 효과도 좋지 않다.
도 1은 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 방법 및 장치를 응용할 수 있는 예시적인 시스템 구성(100)이다. 지적해두어야 할 것은, 도 1에 도시된 것은 본 출원의 실시예을 응용할 수 있는 시스템 구조의 예시에 지나지 않으며, 당업자가 본 출원의 기술내용을 보다 쉽게 이해하도록 돕기 위한 것으로서, 본 출원의 실시예가 다른 장비, 시스템, 환경 또는 응용장면에 응용될 수 없음을 의미하는 것은 아니다.
도 1에 도시된 바와 같이, 본 실시예에 따른 시스템 구성(100)은 단말장비(110) 및 단말장비(120)를 포함할 수 있다. 단말장비(110)와 단말장비(120)는 매칭된 외부 인터액션 인터페이스에 의해 연결되어 직접 통신할 수도 있고, 클라우드 서버의 재전송을 통해 간접적으로 통신할 수도 있다.
단말장비(120)는 미니프로그램을 실행할 수 있고, 단말장비(110)는 미니프로그램 개발을 위한 개발 툴을 포함할 수 있고, 개발 툴은 미니프로그램 실행을 시뮬레이션하기 위한 시뮬레이터(111) 및 미니프로그램을 디버깅하기 위한 디버거(112)를 포함할 수 있고, 디버거(112)는 사용자에게 동작 및 데이터 조회를 위한 디버깅 패널을 제공할 수 있다.
사용자가 단말장비(120)내의 미니프로그램을 디버깅해야 할 경우, 단말장비(110)와 단말장비(120)의 직접적인 인터액션을 통해 실현할 수 있고, 단말장비(110)의 디버거(112)와 시뮬레이터(111)사이의 인터액션을 통해 실현할 수도 있으며, 클라우드 서버의 재전송을 통한 단말장비(110)와 단말장비(120)사이의 인터액션을 통해 실현할 수도 있다. 예를 들어, Android 시스템의 단말은 오픈소스 시스템의 특성으로 인해 데스크탑단의 디버거(112)와 직접 통신할 수 있으므로, Android 시스템의 미니프로그램은 리얼 실행 환경에서 직접 디버깅할 수 있다. 또 예를 들어, IOS 시스템의 단말은 데스크탑단의 디버거(112)와 직접 통신할 수 없으므로, 시뮬레이터(111)에서 미니프로그램의 실행을 시뮬레이션하고, 시뮬레이터(111)와 디버거(112)사이의 인터액션을 통해 미니프로그램을 디버깅할 수 있다. 또 예를 들어, IOS 단말의 리얼 실행 환경에서의 디버깅을 실현하기 위해, 클라우드 서버의 재전송을 통해 디버거(112)와 IOS 단말 사이의 통신을 실현하고, 나아가서 미니프로그램의 디버깅을 실현할 수 있다. 또 예를 들어, Web 브라우저내의 미니프로그램은 디버거(112)와 직접 통신할 수 있으므로, Web 브라우저 내의 미니프로그램을 디버깅할 수도 있다. 따라서, 본 출원은 다양한 플랫폼의 미니프로그램에 대한 디버깅을 실현할 수 있다.
예시적으로, 사용자는 단말장비(110)의 디버거(112)에 의해 제공된 디버깅 패널에서 디버깅 명령을 클릭하거나 입력하고, 디버거(112)는 디버깅 명령을 단말장비(120)로 송신하고, 단말장비(120)는 디버깅 명령을 수신한 후 미니프로그램을 디버깅하여, 디버깅 결과를 생성한 후, 디버깅 결과를 디버거(112)로 피드백하여 디버거(112)의 디버깅 패널에 표시할 수 있다.
예시적으로, 시뮬레이터(111)는 미니프로그램의 실행을 시뮬레이션할 수 있으므로, 사용자가 디버거(112)의 디버깅 패널에서 디버깅 명령을 입력하거나 클릭한 후, 디버거(112)는 디버깅 명령을 시뮬레이터(111)로 송신할 수 있고, 시뮬레이터(111)는 디버깅 명령을 수신한 후 미니프로그램을 디버깅하여, 디버깅 결과를 생성한 후, 디버깅 결과를 디버거(112)로 피드백하여 디버거(112)의 디버깅 패널에 표시할 수 있다.
예시적으로, 사용자가 디버깅 패널에서 클릭하거나 입력하는 디버깅 명령은 어느 변수a의 값을 조회하는 것일 수 있고, 이때 단말장비(102)가 피드백한 디버깅 결과는 예를 들어 a=123과 같은 해당 변수의 값일 수 있다.
도 2는 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 2에 도시된 바와 같이, 상기 미니프로그램을 디버깅하는 방법(200)은 동작 S210 ~ 동작 S230을 포함할 수 있다.
동작 S210에서, 제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택한다.
본 출원의 실시예에 의하면, 디버깅하고자 하는 미니프로그램에 대해, 미니프로그램에 일부 디버깅 코드를 삽입함으로써, 삽입한 디버깅 코드에 의해 미니프로그램을 복수의 디버깅 모듈로 분할하여, 미니프로그램에 대한 디버깅을 각 디버깅 모듈에 대한 디버깅으로 변환할 수 있다. 예시적으로, 실제 수요에 따라 브레이크 포인트 디버깅이 필요한 위치에 디버깅 코드를 삽입함으로써, 미니프로그램이 각 디버깅 모듈까지 실행되었을 때 브레이크 포인트 디버깅을 실행할 수 있고, 복수의 디버깅 모듈은 소정의 순서에 따라 실행된다.
예시적으로, 디버깅 모듈은 미니프로그램의 제2행, 제3행, 제5행, 제6행 및 제9행에서 브레이크 포인트 디버깅이 필요한 디버깅 모듈을 가질 수 있다. 사용자는 그 중의 제2행, 제3행 및 제9행을 이번에 디버깅하려는 타겟 디버깅 모듈로 선택할 수 있다.
구체적으로는, Google의 오픈소스인 Chrome 디버깅 패널을 디버거로 사용할 수 있다. 사용자는 개발 툴에서 제2행, 제3행 및 제9행을 선택한 후, 디버깅 패널에서 브레이크 포인트 디버깅을 시작하는 명령을 클릭할 수 있고, 디버거는 명령을 시뮬레이터 또는 리얼 실행 단말로 송신할 수 있다.
지적해두어야 할 것은, 리얼 실행 환경일 경우, 디버거는 리얼 실행 단말로 명령을 송신하고, 리얼 실행 환경에서, 디버거는 개발 툴의 시뮬레이터로 명령을 송신한다. 여기서, 미니프로그램 개발 툴은 미니프로그램을 시뮬레이션하는 시뮬레이터를 제공할 수 있고, 시뮬레이터의 브레이크 포인트 디버깅 기능에 대한 지원정도도 비교적 좋다.
본 출원의 실시예에 의하면, 미니프로그램의 실행 환경은 시뮬레이터 또는 리얼 실행 단말내의 하나의 스레드일 수 있는데, 예를 들어제1 스레드일 수 있다. 시뮬레이터 또는 리얼 실행 단말은 디버깅 명령을 수신한 후, 사용자가 선택한 제2행, 제3행 및 제9행의 위치 정보를 제1 스레드내에 저장함으로써, 제2행, 제3행 및 제9행의 디버깅 모듈이 타겟 디버깅 모듈임을 나타낼 수 있다.
동작 S220에서, 미니프로그램을 실행하되, 미니프로그램이 각 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단한다.
본 출원의 실시예에 의하면, 미니프로그램이 각 디버깅 모듈까지 실행되었을 때, 디버깅 모듈은 자신이 처한 위치를 제1 스레드에 저장된 타겟 디버깅 모듈의 위치와 비교하여, 자신이 타겟 디버깅 모듈인지 판단하고, 타겟 디버깅 모듈이라고 판단되면, 이는 사용자가 자신에 대해 브레이크 포인트 디버깅을 수행하고자 함을 의미한다. 이 때, 우선 미니프로그램의 현재 실행 상태 데이터를 디버거로 송신할 수 있다. 실행 상태 데이터는 예를 들어 현재 몇행까지 실행되었고, 몇행이 남아있는지 등과 같은 위치 정보를 포함할 수 있다. 또한, 현재 실행 위치에 대한 일부 구체적인 변수 정보 등도 포함할 수 있다. 디버거는 이러한 실행 상태 데이터를 수신한 후, 사용자가 조회할 수 있도록 디버깅 패널에 표시한다.
본 출원의 실시예에 의하면, 현재의 타겟 디버깅 모듈은 현재 실행 상태 데이터를 디버거로 송신한 후, 실행을 중단함으로써, 사용자가 브레이크 포인트 디버깅을 용이하게 진행할 수 있도록 한다. 예시적으로, 시뮬레이터에서 제1 스레드는 worker 스레드일 수 있는데, 여기서, worker 스레드는 JavaScript를 위해 멀티 스레드 환경을 구축하기 위해 생성된 태스크를 담당하는 복수의 스레드 중 하나이다. worker 스레드는 Atomics.wait 방법을 사용하여 미니프로그램을 중단할 수 있다. 즉, 현재의 타겟 디버깅 모듈을 중단할 수 있다. 리얼 클라이언트에서, 브레이크 포인트를 구현할 수 있는 종단 능력을 이용하여 미니프로그램을 중단할 수 있는데, 여기서, 종단 능력은 단말이 구현 가능한 능력일 수 있고, 소프트웨어 프로그램을 이용하여 구현할 수 있으며, 종단 능력은 메시지 전송 등을 구현하는 메시지 종단 능력 등을 포함할 수도 있다.
동작 S230에서, 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성한다.
본 출원의 실시예에 의하면, 미니프로그램은 중단된 후, 디버거의 디버깅 명령을 대기한다. 하지만, 미니프로그램이 중단되었으므로, 디버거가 직접 송신한 명령에 응답할 수 없다. 본 출원의 실시예에 의하면, 시뮬레이터 또는 리얼 클라이언트에 제2 스레드를 설정하여 디버거의 디버깅 명령을 수신하고, 제2 스레드는 예를 들어 미리 설정된 저장 공간에 디버깅 명령을 저장할 수 있다. 그 다음, 제1 스레드로 웨이크업 명령을 송신하여, 중단된 타겟 디버깅 모듈을 웨이크업한다. 타겟 디버깅 모듈이 웨이크업된 후, 저장된 디버깅 명령을 판독하고, 디버깅 명령에 따라 디버깅을 실행하여 대응하는 디버깅 결과를 생성할 수 있다.
본 출원의 실시예에 의하면, 제2 스레드의 주요 역할은 제1 스레드와 디버거 사이의 명령 및 메시지 저장 및 재전송을 실현하는 것이다. 시뮬레이터에서, 제2 스레드는 worker 스레드 중 하나일 수 있다. 리얼 실행 환경에서, 메시지를 전달할 수 있는 종단 능력을 사용하여 실현할 수 있다.
예시적으로, 디버깅 명령은 어느 변수 a의 값을 취득하도록 지시하는 명령일 수 있고, 타겟 디버깅 모듈은 현재 변수 영역에서 변수 a의 값을 산출한 후, 변수 a의 값을 제2 스레드로 피드백할 수 있고, 제2 스레드는 변수 a의 값을 디버거로 피드백하고, 디버거는 사용자에게 표시할 수 있다. 또한, 디버깅 명령은 타겟 디버깅 모듈 내의 어느 변수 b에 값을 할당하는 명령일 수 있는데, 디버깅 명령에는 b=456의 표현식이 포함될 수 있고, 타겟 디버깅 모듈은 현재 변수 영역에서 변수 b의 값으로 456을 할당하고, b=456에 대한 값 할당 성공 메시지를 제2 스레드로 송신한 후, 제2 스레드는 메시지를 디버거로 전달할 수 있다.
본 출원의 실시예에 의하면, 현재의 타겟 디버깅 모듈이 디버깅 결과를 피드백한 후, 현재의 타겟 디버깅 모듈은 계속 중단되어 새로운 명령을 대기한다.
본 출원의 실시예에 의하면, 제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하고, 미니프로그램을 실행하되, 미니프로그램이 각 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단하며, 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성한다. 타겟 디버깅 모듈까지 실행되었을 때 중단되어 디버깅 명령을 대기하고, 디버깅 명령을 수신한 후 타겟 디버깅 모듈을 웨이크업하고 디버깅함으로써, 미니프로그램의 브레이크 포인트 디버깅이 가능하고, 디버깅 효율 및 디버깅 효과를 개선할 수 있다.
본 출원의 실시예에 의하면, 미니프로그램을 디버깅하는 방법은 수신된 제2 디버깅 명령을 저장하고, 미니프로그램을 웨이크업하기 위한 웨이크업 명령을 생성하는 것을 더 포함한다.
구체적으로는, 수신된 제2 디버깅 명령을 저장하고 웨이크업 명령을 생성하는 것은 제2 스레드에서 실행된다. 제2 스레드는 디버거의 디버깅 명령을 수신한 후, 디버깅 명령을 저장할 수 있다. 예시적으로, 시뮬레이터에서는 예를 들어, SharedArrayBuffer 방법을 이용하여 명령을 저장할 수 있는데, SharedArrayBuffer는 하나의 공유 메모리를 나타낼 수 있으며, 리얼 실행 단말에서는 단말의 메모리를 공유 메모리로 사용할 수 있다. 제1 스레드와 제2 스레드는 공유 메모리를 통해 통신할 수 있다. 제2 스레드는 디버깅 명령을 공유 메모리에 저장한 후, 제1 스레드로 웨이크업 명령을 송신하여, 중단된 위치의 타겟 디버깅 모듈을 웨이크업하는데, 예시적으로, 시뮬레이터에서 Atomics.notify 방법을 사용하여 worker 스레드를 웨이크업할 수 있다. 리얼 실행 단말에서 웨이크업 기능을 구현할 수 있는 종단 능력을 사용하여 타겟 디버깅 모듈을 웨이크업할 수 있다.
도 3은 본 출원의 일 실시예에 따른 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하는 방법의 흐름도이다.
도 3에 도시된 바와 같이, 상기 방법은 동작 S331 ~ 동작 S332을 포함할 수 있다.
동작 S331에서, 웨이크업 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업한다.
동작 S332에서, 저장된 제2 디버깅 명령을 취득하고, 저장된 제2 디버깅 명령에 따라 웨이크업된 타겟 디버깅 모듈을 디버깅한다.
본 출원의 실시예에 의하면, 제2 스레드는 시뮬레이터에서 Atomics.notify 방법을 사용하여 worker 스레드 내의 타겟 디버깅 모듈을 웨이크업할 수 있다. 리얼 실행 단말에서는 웨이크업 기능을 구현할 수 있는 종단 능력을 사용하여 타겟 디버깅 모듈을 웨이크업할 수 있다. 타겟 디버깅 모듈이 웨이크업된 후, 우선 공유 메모리 내의 디버깅 명령을 판독하고, 그 다음 디버깅을 실행한다.
본 출원의 실시예에 의하면, 제2 스레드는 수신된 디버깅 명령을 공유 메모리에 저장한 후 제1 스레드를 웨이크업하고, 제1 스레드는 웨이크업된 후 공유 메모리 내의 명령을 판독하여 디버깅을 실행한다. 제1 스레드와 제2 스레드는 공유 메모리를 통해 통신함으로써, 타겟 디버깅 모듈이 브레이크 포인트 디버깅을 수행할 수 있도록 할 수 있다.
도 4는 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 4에 도시된 바와 같이, 상기 방법은 동작 S410~ 동작 S420을 포함할 수 있다.
동작 S410에서, 디버깅 결과를 피드백하고, 타겟 디버깅 모듈을 다시 중단하여 다음 제2 디버깅 명령을 대기한다.
동작 S420에서, 수신된 다음 제2 디버깅 명령에 따라 계속하여 타겟 디버깅 모듈을 디버깅한다.
본 출원의 실시예에 의하면, 현재의 타겟 디버깅 모듈이 디버깅 결과를 피드백한 후, 현재의 타겟 디버깅 모듈은 계속 중단되어 새로운 명령을 대기한다. 새로운 명령은 현재의 타겟 디버깅 모듈을 계속하여 디버깅하는 제2 디버깅 명령일 수 있고, 제2 스레드는 디버거의 새로운 디버깅 명령을 수신한 후, 새로운 디버깅 명령을 공유 메모리에 저장한다. 그 다음, 제1 스레드로 웨이크업 명령을 송신하여, 중단된 타겟 디버깅 모듈을 웨이크업한다. 타겟 디버깅 모듈이 웨이크업된 후, 저장된 새로운 디버깅 명령을 판독한 다음, 새로운 디버깅 명령에 따라 디버깅을 실행하여, 새로운 디버깅 결과를 생성할 수 있다. 그리고, 새로운 디버깅 결과를 제2 스레드로 피드백하고, 제2 스레드는 새로운 디버깅 결과를 디버거로 송신하며, 디버거는 새로운 디버깅 결과를 사용자에게 표시한다.
예시적으로, 사용자가 디버거를 통해 변수 a의 값을 취득하는 명령을 송신한 후, 타겟 디버깅 모듈은 디버깅을 거쳐 a=123을 피드백하고, 사용자는 a=123을 확인한 후, 다시 디버거를 통해 a=456의 명령을 송신하며, 타겟 디버깅 모듈은 디버깅을 거쳐 a에456의 값을 할당한 후, a=456의 디버깅 결과를 피드백한다.
지적해두어야 할 것은, 현재의 타겟 디버깅 모듈이 새로운 디버깅 결과 a=456을 피드백한 후, 현재의 타겟 디버깅 모듈은 계속 중단되어 새로운 명령을 대기한다.
도 5는 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 5에 도시된 바와 같이, 상기 방법은 동작 S510 ~ 동작 S520을 포함할 수 있다.
동작 S510에서, 현재의 타겟 디버깅 모듈의 디버깅 결과를 피드백하고, 현재의 타겟 디버깅 모듈을 중단하여 제3 디버깅 명령을 대기한다.
동작 S520에서, 수신된 제3 디버깅 명령에 따라 현재의 타겟 디버깅 모듈을 종료하고, 다음 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행한다.
본 출원의 실시예에 의하면, 현재의 타겟 디버깅 모듈이 디버깅 결과를 피드백한 후, 현재의 타겟 디버깅 모듈은 계속 중단되어 새로운 명령을 대기한다. 새로운 명령은 현재의 타겟 디버깅 모듈을 종료한 후, 다음 타겟 디버깅 모듈까지 실행하여 디버깅하는 것을 지시하는 제3 디버깅 명령일 수 있다. 여기서 다음은, 현재의 타겟 디버깅 모듈 이 후의 하나일 수 있고, 사용자에 의해 지정된 하나일 수도 있다. 예를 들어, 현재의 타겟 디버깅 모듈은 제2행의 디버깅 모듈일 수 있고, 다음은 제3행의 디버깅 모듈일 수도 있고, 사용자에 의해 지정된 예를 들어 제9행의 타겟 디버깅 모듈일 수도 있다.
본 출원의 실시예에 의하면, 제2 스레드는 디버거의 제3 디버깅 명령을 수신한 후, 제3 디버깅 명령을 공유 메모리에 저장한다. 그 다음, 제1 스레드로 웨이크업 명령을 송신하여, 중단 위치의 타겟 디버깅 모듈을 웨이크업한다. 타겟 디버깅 모듈이 웨이크업된 후, 저장된 제3 디버깅 명령을 판독한 다음, 제3 디버깅 명령에 따라 현재의 디버깅 모듈을 종료하고, 예를 들어 제9행의 타겟 디버깅 모듈과 같은 다음 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행한 후, 제9행의 실행 상태 데이터를 제2 스레드로 송신하여, 제2 스레드로 하여금 디버거로 송신하도록 할 수 있다. 그리고, 제9행의 타겟 디버깅 모듈은 실행을 중단하고, 해당 모듈을 디버깅하기 위한 명령을 대기한다.
도 6은 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 6에 도시된 바와 같이, 상기 방법은 동작 S610 ~ 동작 S620을 포함할 수 있다.
동작 S610에서, 현재의 타겟 디버깅 모듈의 디버깅 결과를 피드백하고, 현재의 타겟 디버깅 모듈을 중단하여 제4 디버깅 명령을 대기한다.
동작 S620에서, 수신된 제4 디버깅 명령에 따라 현재의 타겟 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 제1 디버깅 명령을 다시 수신할 때까지 계속하여 미니프로그램을 실행한다.
본 출원의 실시예에 의하면, 현재의 타겟 디버깅 모듈이 디버깅 결과를 피드백한 후, 현재의 타겟 디버깅 모듈은 계속 중단되어 새로운 명령을 대기한다. 새로운 명령은 모든 타겟 디버깅 모듈의 브레이크 포인트 디버깅을 종료하는 것을 지시하는 제4 디버깅 명령일 수 있다.
본 출원의 실시예에 의하면, 제2 스레드는 디버거의 제4 디버깅 명령을 수신한 후, 제4 디버깅 명령을 공유 메모리에 저장한다. 그 다음, 웨이크업 명령을 제1 스레드로 송신하여, 중단 위치의 타겟 디버깅 모듈을 웨이크업한다. 타겟 디버깅 모듈이 웨이크업된 후, 저장된 제4 디버깅 명령을 판독한 다음, 제4 디버깅 명령에 따라 현재의 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 타겟 디버깅 모듈을 선택하여 브레이크 포인트 디버깅을 실행하는 제1 디버깅 명령을 다시 수신할 때까지 계속하여 미니프로그램을 실행할 수 있다.
예시적으로, 제1 스레드는 제4 디버깅 명령을 판독한 후, 현재의 타겟 디버깅 모듈을 종료하고, 제2행, 제3행 및 제9행의 디버깅 모듈을 타겟 디버깅 모듈로 선택한 것을 취소한다. 그 다음, 제2행, 제3행 및 제9행의 디버깅 모듈을 타겟 디버깅 모듈로 선택한 것을 취소하는 해제 메시지를 제2 스레드로 송신할 수 있고, 제2 스레드는 해제 메시지를 디버거로 송신하고, 디버거는 해제 메시지를 사용자에게 표시할 수 있으며, 사용자는 비 브레이크 포인트 디버깅을 계속하여 실행할 수 있다.
도 7은 본 출원의 다른 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 7에 도시된 바와 같이, 상기 미니프로그램을 디버깅하는 방법(700)은 동작 S710 ~ 동작 S730을 포함할 수 있다.
동작 S710에서, 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 지시하는 제1 디버깅 명령을 송신한다.
본 출원의 실시예에 의하면, 디버깅하고자 하는 미니프로그램에 대해, 미니프로그램에 일부 디버깅 코드를 삽입함으로써, 삽입한 디버깅 코드에 의해 미니프로그램을 복수의 디버깅 모듈로 분할하여, 미니프로그램에 대한 디버깅을 각 디버깅 모듈에 대한 디버깅으로 변환할 수 있다. 예시적으로, 실제 수요에 따라 브레이크 포인트 디버깅이 필요한 위치에 디버깅 코드를 삽입하여, 미니프로그램이 각 디버깅 모듈까지 실행되었을 때 브레이크 포인트 디버깅을 실행할 수 있도록 할 수 있다.
예시적으로, 사용자는 브레이크 포인트 디버깅이 필요한 위치 정보를 선택할 수 있고, 이 때, 사용자가 선택한 위치의 디버깅 모듈은 타겟 디버깅 모듈로 된다. 예를 들어, 사용자가 제2행, 제3행 및 제9행을 선택하였을 경우, 제2행, 제3행 및 제9행의 디버깅 모듈이 타겟 디버깅 모듈로 된다.
본 출원의 실시예에 의하면, 사용자는 디버깅이 필요한 위치를 선택한 후, 디버깅 패널에서 브레이크 포인트 디버깅을 시작하는 명령을 클릭할 수 있고, 디버거는 디버깅되는 측의 시뮬레이터 또는 리얼 실행 단말로 명령을 송신할 수 있고, 명령에는 사용자가 선택한 브레이크 포인트 디버깅이 필요한 위치 정보가 포함된다.
동작 S720에서, 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신한다.
동작 S730에서, 타겟 테스트 모듈에 대한 디버깅 결과를 수신한다.
예시적으로, 디버거가 시뮬레이터 또는 클라이언트에 의해 송신된 제2행의 실행 데이터를 수신하였을 경우, 미니프로그램이 제2행까지 실행되고 중단되었음을 의미한다. 사용자는 디버깅 패널에서 예를 들어 변수 값을 조회하는 것과 같은 디버깅 명령을 클릭하거나 입력할 수 있고, 디버거는 디버깅 명령을 디버깅되는 측의 시뮬레이터 또는 클라이언트로 송신할 수 있다. 디버깅되는 측은 디버깅 명령에 응답하여 디버깅 결과를 생성한 후, 디버깅 결과를 디버거로 피드백할 수 있고, 디버거는 디버깅 결과를 사용자가 조회할 수 있도록 표시할 수 있다.
본 출원의 실시예에 의하면, 명령으로 상기 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 지시하는 제1 디버깅 명령을 송신하고, 상기 미니프로그램이 상기 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 상기 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신하며, 상기 타겟 테스트 모듈의 디버깅 결과를 수신한다. 제1 명령을 송신하여 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때 중단되어 디버깅 명령을 대기하도록 지시한 후, 제2 디버깅 명령을 송신하여 타겟 디버깅 모듈을 웨이크업하여 디버깅함으로써, 미니프로그램의 브레이크 포인트 디버깅을 실현할 수 있고, 디버깅 효율 및 디버깅 효과를 개선할 수 있다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 방법(700)은, 피드백된 디버깅 결과를 수신한 것에 응답하여, 제3 디버깅 명령 및 제4 디버깅 명령 중 적어도 하나를 송신하는 것을 더 포함할 수 있고, 여기서, 제3 디버깅 명령은 현재의 타겟 디버깅 모듈을 종료하고, 다음 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행하도록 지시하고, 제4 디버깅 명령은 현재의 타겟 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 제1 디버깅 명령을 다시 수신할 때까지 계속하여 미니프로그램을 실행하도록 지시한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 방법(700)은 타겟 디버깅 모듈에 대한 선택을 취소하였음을 나타내는 해제 메시지를 수신하는 것을 더 포함할 수 있다.
본 출원의 실시예에 의하면, 디버거는, 제3 디버깅 명령을 송신하여 디버깅되는 측이 현재 위치의 브레이크 포인트 디버깅을 종료하고, 지정한 위치로 이동하여 브레이크 포인트 디버깅을 실행하도록 지시할 수도 있다. 예를 들어, 제3 디버깅 명령은 제2행의 디버깅을 종료하고, 제9행으로 이동하여 브레이크 포인트 디버깅을 실행하도록 지시한다.
본 출원의 실시예에 의하면, 제4 디버깅 명령을 송신하여, 디버깅되는 측이 현재 위치의 브레이크 포인트 디버깅을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소함으로써, 브레이크 포인트 디버깅을 종료하고 비 브레이크 포인트 디버깅으로 복귀하도록 지시할 수도 있다. 제4 디버깅 명령을 송신한 후, 디버깅되는 측이 송신한 타겟 디버깅 모듈에 대한 선택을 취소하였음을 명령하는 해제 메시지를 수신하게 되고, 비 브레이크 포인트 디버깅을 계속하여 진행할 수 있게 된다.
도 8은 본 출원의 일 실시예에 따른 시뮬레이션 환경에서 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 8에 도시된 바와 같이, 상기 방법은 동작 S8001 ~ 동작 S8027을 포함할 수 있다.
동작 S8001에서, 디버거는 브레이크 포인트 디버깅을 시작하도록 하는 제1 명령을 시뮬레이터의 제2 스레드로 송신하고, 제2 스레드는 제1 명령을 시뮬레이터의 제1 스레드로 송신한다. 여기서, 명령에는 사용자가 선택한 브레이크 포인트 디버깅이 필요한 타겟 디버깅 모듈의 위치 정보가 포함된다.
예시적으로, 제1 스레드는 worker 스레드일 수 있고, 제2 스레드는 제어프로그램일 수 있으며, 미니프로그램은 worker 스레드 내에서 실행된다. 사용자가 선택한 브레이크 포인트 디버깅이 필요한 타겟 디버깅 모듈은 제2행의 디버깅 모듈, 제3행의 디버깅 모듈 및 제9행의 디버깅 모듈일 수 있다.
동작 S8002에서, 제1 스레드는 사용자가 선택한 브레이크 포인트 디버깅이 필요한 타겟 디버깅 모듈의 위치 정보를 캐싱한다.
예시적으로, 배열 [2,3,9]로 저장할 수 있다.
동작 S8003에서, 미니프로그램이 타겟 디버깅 모듈까지 실행된 후, 현재 브레이크 포인트의 실행 상태 정보를 제2 스레드로 송신하고, 제2 스레드는 실행 상태 정보를 디버거로 송신한다.
예시적으로, 미니프로그램이 제2행의 타겟 디버깅 모듈까지 실행된 후, 제2행의 타겟 디버깅 모듈은 자신이 속하는 행수 2를 배열[2,3,9]의 행수와 비교하여, 배열[2,3,9] 내에 자신이 속하는 행수 2가 포함되어 있으면, worker. postMessage 방법을 통해 현재 위치의 실행 상태 정보를 제2 스레드로 송신하여, 제2 스레드를 통해 디버거로 전달할 수 있다.
동작 S8004에서, 디버거는 현재 브레이크 포인트의 실행 상태 데이터를 표시하고, 사용자가 조작할 수 있도록 작업 버튼을 표시한다.
동작 S8005에서, 타겟 디버깅 모듈은 실행을 중단하고, 현재 브레이크 포인트가 온 되어, 디버깅 명령을 대기한다.
예시적으로, 타겟 디버깅 모듈은 Atomics.wait(SharedArrayBuffer)방법을 통해 실행을 중단하고, 제2 스레드가 SharedArrayBuffer 공유 메모리 내에 저장한 명령을 대기한다.
동작 S8006에서, 사용자는 디버거가 제공하는 디버깅 패널에서 변수 결과를 조회한다.
동작 S8007에서, 디버거는 변수를 산출하기 위한 제2 명령을 제2 스레드로 송신하고, 제2 명령에는 사용자가 조회하고자 하는 변수명이 포함된다.
동작 S8008에서, 제2 스레드는 제2 명령을 공유 메모리에 저장하고, 미니프로그램을 웨이크업하기 위한 웨이크업 명령을 생성하여, 브레이크 포인트 위치의 타겟 디버깅 서브 모듈을 웨이크업한다.
예시적으로, 제2 스레드는 제2 명령을 SharedArrayBuffer에 저장한 후, Atomics.notify(SharedArrayBuffer)방법을 통해 웨이크업 명령을 생성하여 타겟 디버깅 모듈을 웨이크업한다.
동작 S8009에서, 타겟 디버깅 모듈은 공유 메모리 내의 제2 명령을 판독하고, 변수 값을 산출한다.
동작 S8010에서, 타겟 디버깅 모듈은 디버깅 결과, 즉 변수의 산출 결과를 제2 스레드로 송신하고, 제2 스레드는 디버거로 재전송한다.
예시적으로, 타겟 디버깅 모듈은 worker. postMessage 방법을 통해 변수의 산출 결과를 제2 스레드로 송신한다.
동작 S8011에서, 타겟 디버깅 모듈은 현재 브레이크 포인트의 코드 내에서 반복한다.
예시적으로, 디버깅 모듈은 하나의 while 루프에 포함될 수 있고, while루프는 while 루프에서 벗어나는 조건을 설정하여, 조건에 부합되면 현재 while에서 벗어나고, 부합되지 않으면, 현재의 타겟 디버깅 모듈에 대한 while루프를 계속 반복하도록 할 수 있다. 예를 들어, false를 피드백할 경우 루프에서 벗어나고, true를 피드백할 경우 while 루프를 계속 반복하도록 할 수 있다.
동작 S8012에서, 타겟 디버깅 모듈은 실행을 중단하여 브레이크 포인트를 유지한다.
예시적으로, 타겟 디버깅 모듈은 Atomics.wait(SharedArrayBuffer)방법을 통해 실행을 중단하고, 제2 스레드가 SharedArrayBuffer 공유 메모리 내에 저장한 명령을 대기한다.
동작 S8013에서, 사용자는 디버깅 패널에서 변수의 산출 결과를 조회한다.
동작 S8014에서, 사용자는 디버깅 패널에서 다음 타겟 디버깅 모듈로 이동하도록 클릭한다.
예시적으로, 다음 타겟 디버깅 모듈은 현재의 타겟 디버깅 모듈 이 후의 첫 모듈일 수도 있고, 사용자가 지정한 위치에 있는 타겟 디버깅 모듈일 수도 있다.
동작 S8015에서, 디버거는 현재의 타겟 디버깅 모듈을 종료하고 다음 타겟 디버깅 모듈로 이동하도록 하는 제3 디버깅 명령을 제2 스레드로 송신한다.
동작 S8016에서, 제2 스레드는 제3 디버깅 명령을 공유 메모리에 기록하고, 미니프로그램을 웨이크업하기 위한 웨이크업 명령을 생성하여, 브레이크 포인트 위치의 타겟 디버깅 서브 모듈을 웨이크업한다.
예시적으로, 제2 스레드는 제3 명령을 SharedArrayBuffer에 저장한 후, Atomics.notify(SharedArrayBuffer)방법을 통해 웨이크업 명령을 생성하여 타겟 디버깅 모듈을 웨이크업한다.
동작 S8017에서, 타겟 디버깅 모듈은 공유 메모리 내의 제3 명령을 판독하고, 현재의 타겟 디버깅 모듈의 실행을 종료한다.
예시적으로, true를 피드백함으로써 현재의 타겟 디버깅 모듈의 while 루프에서 벗어나, 현재의 타겟 디버깅 모듈의 실행을 종료할 수 있다.
동작 S8018에서, 다음 브레이크 포인트의 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행한다.
동작 S8019에서, 타겟 디버깅 모듈은 현재 브레이크 포인트의 실행 상태 정보를 제2 스레드로 송신하고, 제2 스레드는 실행 상태 정보를 디버거로 송신한다.
동작 S8020에서, 타겟 디버깅 모듈은 실행을 중단하고, 현재 브레이크 포인트가 온 되어, 디버깅 명령을 대기한다.
동작 S8021에서, 사용자는 디버깅 패널에서 모든 브레이크 포인트 디버깅을 종료하도록 클릭한다.
동작 S8022에서, 디버거는 브레이크 포인트 디버깅을 종료하는 제4 명령을 제2 스레드로 송신한다.
동작 S8023에서, 제2 스레드는 제4 명령을 공유 메모리에 기록하고, 미니프로그램을 웨이크업하기 위한 웨이크업 명령을 생성하여, 브레이크 포인트 위치의 타겟 디버깅 서브 모듈을 웨이크업한다.
동작 S8024에서, 타겟 디버깅 모듈은 공유 메모리 내의 제4 명령을 판독하고, 현재의 타겟 디버깅 모듈의 실행을 종료한다.
동작 S8025에서, 제1 스레드는 브레이크 포인트를 해제하는 메시지를 제2 스레드로 송신하고, 제2 스레드는 브레이크 포인트를 해제하는 메시지를 디버거로 송신한다.
동작 S8026에서, 디버거는 비 브레이크 포인트 상태로 복귀한다.
동작 S8027에서, 제1 스레드 내의 미니프로그램은 계속 실행되고, 후속적으로 사용자가 타겟 디버깅 모듈을 선택하여 브레이크 포인트 디버깅을 실행하는 새로운 제1 명령을 수신하면, 상기 과정을 반복한다. 후속적으로 제1 명령이 수신되지 않을 경우, 종료될 때까지 계속 실행한다.
도 9는 본 출원의 일 실시예에 따른 리얼 환경에서 미니프로그램을 디버깅하는 방법의 흐름도이다.
도 9에 도시된 바와 같이, 상기 방법은 동작 S9001 ~ 동작 S9027을 포함할 수 있다.
본 출원의 실시예에 의하면, 리얼 환경에서 미니프로그램은 리얼 클라이언트에서 실행되므로, 디버거와 클라이언트사이의 인터액션은 클라우드 서버를 통해 재전송될 수 있다.
동작 S9001에서, 디버거는 브레이크 포인트 디버깅을 시작하도록 하는 제1 명령을 클라우드 서버로 송신하고, 클라우드 서버는 제1 명령을 클라이언트의 제2 스레드로 송신하며, 제2 스레드는 제1 명령을 클라이언트의 제1 스레드로 송신한다. 여기서, 명령에는 사용자가 선택한 브레이크 포인트 디버깅이 필요한 타겟 디버깅 모듈의 위치 정보가 포함된다.
예시적으로, 제1 스레드 및 제2 스레드는 모두 미니프로그램을 디버깅하기 위한 클라이언트에 설치된 애플리케이션일 수 있고, 미니프로그램은 제1 스레드에서 실행된다.
동작 S9002에서, 제1 스레드는 사용자가 선택한 브레이크 포인트 디버깅이 필요한 타겟 디버깅 모듈의 위치 정보를 캐싱한다.
동작 S9003에서, 미니프로그램이 타겟 디버깅 모듈까지 실행된 후, 현재 브레이크 포인트의 실행 상태 정보를 제2 스레드로 송신하고, 제2 스레드는 실행 상태 정보를 클라우드 서버로 송신하며, 클라우드 서버는 디버거로 재전송한다.
동작 S9004에서, 디버거는 현재 위치의 실행 상태 데이터를 표시하고, 사용자가 조작할 수 있도록 작업 버튼을 표시한다.
동작 S9005에서, 타겟 디버깅 모듈은 실행을 중단하고, 현재 브레이크 포인트가 온 되어, 디버깅 명령을 대기한다.
예시적으로, 타겟 디버깅 모듈은 종단 능력을 통해 중단될 수 있고, 클라이언트의 종단 능력은 다양한 능력을 구현할 수 있는 방법일 수 있으며, 프로그래밍을 통해 구현된다.
동작 S9006에서, 사용자는 디버거가 제공하는 디버깅 패널에서 변수 결과를 조회한다.
동작 S9007에서, 디버거는 변수를 산출하기 위한 제2 명령을 클라우드 서버로 송신하고, 클라우드 서버는 클라이언트의 제2 스레드로 재전송하며, 제2 명령에는 사용자가 조회하고자 하는 변수명이 포함된다.
동작 S9008에서, 제2 스레드는 제2 명령을 공유 메모리에 저장하고, 종단 능력을 통해 타겟 디버깅 모듈을 웨이크업한다.
동작 S9009에서, 타겟 디버깅 모듈은 공유 메모리 내의 제2 명령을 판독하고, 변수 값을 산출한다.
동작 S9010에서, 타겟 디버깅 모듈은 메시지 전달 종단 능력을 통해 변수의 산출 결과를 제2 스레드로 송신하고, 제2 스레드는 변수의 산출 결과를 클라우드 서버로 송신하며, 클라우드 서버는 디버로 재전송한다.
동작 S9011에서, 타겟 디버깅 모듈은 현재 브레이크 포인트의 코드 내에서 반복한다.
동작 S9012에서, 타겟 디버깅 모듈은 브레이크 포인트 종단 능력을 통해 실행을 중단하여 브레이크 포인트를 유지한다.
동작 S9013에서, 사용자는 디버깅 패널에서 변수의 산출 결과를 조회한다.
동작 S9014에서, 사용자는 디버깅 패널에서 다음 타겟 디버깅 모듈로 이동하도록 클릭한다.
예시적으로, 다음 타겟 디버깅 모듈은 현재의 타겟 디버깅 모듈 이 후의 첫 모듈일 수도 있고, 사용자가 지정한 위치에 있는 타겟 디버깅 모듈일 수도 있다.
동작 S9015에서, 디버거는 현재의 타겟 디버깅 모듈을 종료하고 다음 타겟 디버깅 모듈로 이동하도록 하는 제3 디버깅 명령을 클라우드 서버로 송신하고, 클라우드 서버는 클라이언트의 제2 스레드로 재전송한다.
동작 S9016에서, 제2 스레드는 제3 디버깅 명령을 공유 메모리에 기록하고, 종단 능력을 통해 타겟 디버깅 모듈을 웨이크업한다.
예시적으로, 공유 메모리는 클라이언트의 메모리이다.
동작 S9017에서, 타겟 디버깅 모듈은 공유 메모리 내의 제3 명령을 판독하고, 현재의 타겟 디버깅 모듈의 실행을 종료한다.
동작 S9018에서, 다음 브레이크 포인트의 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행한다.
동작 S9019에서, 타겟 디버깅 모듈은 현재 브레이크 포인트의 실행 상태 정보를 제2 스레드로 송신하고, 제2 스레드는 실행 상태 정보를 클라우드 서버로 송신하며, 클라우드 서버는 디버거로 재전송한다.
동작 S9020에서, 타겟 디버깅 모듈은 실행을 중단하고, 브레이크 포인트가 온 되어, 디버깅 명령을 대기한다.
동작 S9021에서, 사용자는 디버깅 패널에서 모든 브레이크 포인트 디버깅을 종료하도록 클릭한다.
동작 S9022에서, 디버거는 브레이크 포인트 디버깅을 종료하는 제4 명령을 제2 스레드로 송신한다.
동작 S9023에서, 제2 스레드는 제4 명령을 공유 메모리에 기록하고, 종단 능력을 통해 제1 스레드를 웨이크업한다.
동작 S9024에서, 타겟 디버깅 모듈은 공유 메모리 내의 제4 명령을 판독하고, 현재의 타겟 디버깅 모듈의 실행을 종료한다.
동작 S9025에서, 제1 스레드는 브레이크 포인트를 해제하는 메시지를 메시지 전달 종단 능력을 통해 제2 스레드로 송신하고, 제2 스레드는 브레이크 포인트를 해제하는 메시지를 클라우드 서버로 송신하며, 클라우드 서버는 디버거로 재전송한다.
동작 S9026에서, 디버거는 비 브레이크 포인트 상태로 복귀한다.
동작 S9027에서, 제1 스레드 내의 미니프로그램은 계속 실행되고, 후속적으로 사용자가 타겟 디버깅 모듈을 선택하여 브레이크 포인트 디버깅을 실행하는 새로운 제1 명령을 수신하면, 상기 과정을 반복한다. 후속적으로 제1 명령이 수신되지 않을 경우, 종료될 때까지 계속 실행한다.
도 10은 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 장치의 블록도이다.
도 10에 도시된 바와 같이, 상기 미니프로그램을 디버깅하는 장치(1000)는 선택 모듈(1001), 제1 중단 모듈(1002) 및 제1 디버깅 모듈(1003)을 포함할 수 있다.
선택 모듈(1001)은 제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택한다.
제1 중단 모듈(1002)은 미니프로그램을 실행하고, 미니프로그램이 각 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단한다.
제1 디버깅 모듈(1003)은 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1000)는 처리 모듈을 더 포함할 수 있다.
처리 모듈은 수신된 제2 디버깅 명령을 저장하고, 미니프로그램을 웨이크업하기 위한 웨이크업 명령을 생성한다.
제1 디버깅 모듈(1003)은 제1 웨이크업 수단 및 디버깅 수단을 포함한다.
제1 웨이크업 수단은 웨이크업 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업한다.
디버깅 수단은 저장된 제2 디버깅 명령을 취득하고, 저장된 제2 디버깅 명령에 따라 웨이크업된 타겟 디버깅 모듈을 디버깅한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1000)는 제1 송신 모듈을 더 포함할 수 있다.
제1 송신 모듈은 미니프로그램이 타겟 디버깅 모듈까지 실행된 것을 확정하였을 경우, 타겟 디버깅 모듈을 중단하기 전에 미니프로그램의 현재 실행 데이터를 송신한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1000)는 제2 중단 모듈 및 제2 디버깅 모듈을 더 포함할 수 있다.
제2 중단 모듈은 디버깅 결과를 피드백하고, 타겟 디버깅 모듈을 다시 중단하여 다음 제2 디버깅 명령을 대기한다.
제2 디버깅 모듈은 수신된 다음 제2 디버깅 명령에 따라 계속하여 타겟 디버깅 모듈을 디버깅한다.
본 출원의 실시예에 의하면, 타겟 디버깅 모듈은 복수개이다. 상기 미니프로그램을 디버깅하는 장치(1000)는 제3 중단 모듈 및 제1 실행 모듈을 더 포함할 수 있다.
제3 중단 모듈은 현재의 타겟 디버깅 모듈의 디버깅 결과를 피드백하고, 현재의 타겟 디버깅 모듈을 중단하여 제3 디버깅 명령을 대기한다.
제1 실행 모듈은 수신된 제3 디버깅 명령에 따라 현재의 타겟 디버깅 모듈을 종료하고, 다음 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1000)는 제4 중단 모듈 및 제2 실행 모듈을 더 포함할 수 있다.
제4 중단 모듈은 현재의 타겟 디버깅 모듈의 디버깅 결과를 피드백하고, 현재의 타겟 디버깅 모듈을 중단하여 제4 디버깅 명령을 대기한다.
제2 실행 모듈은 수신된 제4 디버깅 명령에 따라 현재의 타겟 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 제1 디버깅 명령을 다시 수신할 때까지 계속하여 미니프로그램을 실행한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1000)는 제2 송신 모듈을 더 포함할 수 있다.
제2 송신 모듈은 타겟 디버깅 모듈에 대한 선택을 취소한 후, 타겟 디버깅 모듈에 대한 선택을 취소하였음을 나타내는 해제 메시지를 송신한다.
본 출원의 실시예에 의하면, 타겟 디버깅 모듈을 선택하는 것, 미니프로그램을 실행하는 것 및 타겟 디버깅 모듈을 디버깅하는 것은 제1 스레드에서 진행되고, 제1 디버깅 명령 및 제2 디버깅 명령은 제2 스레드에서 수신되며, 디버깅 결과는 제2 스레드에서 피드백된다.
본 출원의 실시예에 의하면, 미니프로그램은 시뮬레이션 환경 또는 리얼 환경에서 실행된다.
도 11은 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 장치의 블록도이다.
도 11에 도시된 바와 같이, 상기 미니프로그램을 디버깅하는 장치(1100)는 제1 송신 모듈(1101), 제2 송신 모듈(1102) 및 제1 수신 모듈(1103)을 포함할 수 있다.
제1 송신 모듈(1101)은 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하도록 지시하는 제1 디버깅 명령을 송신한다.
제2 송신 모듈(1102)은 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신한다.
제1 수신 모듈(1103)은 타겟 테스트 모듈의 디버깅 결과를 수신한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1100)는 제3 송신 모듈을 포함할 수 있다.
제3 송신 모듈은 피드백된 디버깅 결과를 수신한 것에 응답하여, 제3 디버깅 명령 및 제4 디버깅 명령 중 적어도 하나를 송신하고, 여기서, 제3 디버깅 명령은 현재의 타겟 디버깅 모듈을 종료하고, 다음 타겟 디버깅 모듈까지 계속하여 미니프로그램을 실행하도록 지시하고, 제4 디버깅 명령은 현재의 타겟 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 제1 디버깅 명령을 다시 수신할 때까지 계속하여 미니프로그램을 실행하도록 지시한다.
본 출원의 실시예에 의하면, 상기 미니프로그램을 디버깅하는 장치(1100)는 제2 수신 모듈을 더 포함할 수 있다.
제2 수신 모듈은 타겟 디버깅 모듈에 대한 선택을 취소하였음을 나타내는 해제 메시지를 수신한다.
본 출원의 실시예에 의하면, 본 출원은 전자장비, 판독가능 저장 매체 및 컴퓨터 프로그램 제품도 제공한다. 컴퓨터 프로그램 제품은 상기 컴퓨터에 의해 실행될 때 상기의 방법을 구현하는 컴퓨터 프로그램을 포함할 수 있다.
도 12에 도시된 바와 같이, 본 출원의 일 실시예에 따른 미니프로그램을 디버깅하는 방법의 전자장비의 블록도이다. 전자장비는 예를 들어, 랩탑 컴퓨터, 데스크 탑 컴퓨터, 워크스테이션, PDA (Personal Digital Assistants), 서버, 블레이드 서버, 메인프레임 컴퓨터, 및 기타 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 포함할 수 있다. 전자장비는 예를 들어, 개인 디지털 프로세싱 PDA (Personal Digital Assistants), 셀룰러 전화기, 스마트 폰, 웨어러블 장비, 및 기타 유사한 컴퓨팅 장비와 같은 다양한 형태의 모바일 장비를 포함할 수 있다. 본 명세서에 기재된 부품, 이들의 연결 및 관계, 그리고 이들의 기능은 단지 예시적인 것에 불과하며, 본 명세서에서 설명 및/또는 요구하는 본 출원의 범위를 한정하기 위한 것이 아니다.
도 12에 도시된 바와 같이, 상기 전자장비(1200)는, 하나 또는 복수의 프로세서(1201), 메모리(1202), 및 각 부품을 연결하기 위한 인터페이스를 포함하고, 상기 인터페이스에는 고속 인터페이스 및 저속 인터페이스가 포함된다. 각 부품들은 서로 다른 버스라인을 통해 서로 연결되고, 공공 메인보드에 장착되거나 또는 수요에 따라 기타 방식으로 장착될 수 있다. 프로세서는 전자장비에서 실행되는 명령들을 실행할 수 있고, 상기 명령은 메모리에 저장되거나 또는 메모리에 저장되어 외부 입력/출력 장치(예를 들어, 인터페이스에 접속된 표시 장치)에 GUI의 그래픽 정보를 표시하기 위한 명령을 포함할 수 있다. 다른 실시예에서는, 수요에 따라 복수의 프로세서 및/또는 복수의 버스라인을 복수의 메모리 및 복수의 메모리와 함께 사용될 수 있다. 마찬가지로, 복수의 전자장비를 연결하고, 각 전자장비에 의해 일부 필요한 동작을 제공할 수 있다(예를 들어, 서버 어레이, 한 세트의 블레이드 서버, 또는 멀티 프로세서 시스템). 도 12에서는, 하나의 프로세서(1201)의 경우를 예로 들어 설명한다.
메모리(1202)는 본 출원에 의해 제공되는 비일시적 컴퓨터 판독 가능 저장 매체이다. 여기서, 상기 메모리에는 적어도 하나의 프로세서에 의해 실행될 수 있는 명령이 저장될 수 있고, 상기 명령이 상기 적어도 하나의 프로세서에 의해 실행될 경우, 본 출원에 의해 제공되는 미니프로그램을 디버깅하는 방법을 실행할 수 있다. 본 출원의 비일시적 컴퓨터 판독가능 저장 매체에는 컴퓨터에 의해 실행될 경우 컴퓨터로 하여금 본 출원에 의해 제공되는 미니프로그램을 디버깅하는 방법을 실행하도록 하는 컴퓨터 명령이 저장되어 있다.
메모리(1202)는 비일시적 컴퓨터 판독가능 저장 매체로서, 예를 들어, 본 출원의 실시예에 따른 미니프로그램을 디버깅하는 방법에 대응하는 프로그램 명령/모듈(예를 들어, 도 10에 도시된 선택 모듈(1001), 제1 중단 모듈(1002) 및 제1 디버깅 모듈(1003) 및/또는 도 11에 도시된 제1 송신 모듈(1101), 제2 송신 모듈(1102) 및 제1 수신 모듈(1103))과 같은 비일시적 소프트웨어 프로그램, 비일시적 컴퓨터 실행가능 프로그램 및 모듈을 저장할 수 있다. 프로세서(1201)는 메모리(1202)에 저장된 비일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로써, 서버의 다양한 기능 및 데이터 처리를 실행한다. 즉, 상기 방법 실시예에 따른 미니프로그램을 디버깅하는 방법을 구현한다.
메모리(1202)는 프로그램 저장 영역 및 데이터 저장 영역을 포함할 수 있다. 여기서, 프로그램 저장 영역은 OS 시스템 및 적어도 하나의 기능에 필요한 앱을 저장할 수 있고, 데이터 저장 영역은 미니프로그램을 디버깅하는 방법의 전자장비(1200)의 사용에 따라 생성된 데이터 등을 저장할 수 있다. 또한, 메모리(1202)는 고속 RAM(Random Access Memory)를 포함할 수도 있고, 예를 들어, 적어도 하나의 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 기타 비일시적 고체 저장 디바이스와 같은 비일시적 메모리를 포함할 수도 있다. 일부 실시예에 의하면, 메모리(1202)는 프로세서(1201)에 대해 원격으로 설치된 메모리를 포함할 수 있고, 이러한 원격 메모리는 네트워크를 통해 미니프로그램을 디버깅하는 방법의 전자장비(1200)에 연결될 수 있다. 상기 네트워크의 실예로는 인터넷, 인트라넷, 근거리 통신망(LAN), 이동 통신망 및 이들의 조합을 포함할 수 있는데, 이에 한정되지는 않는다.
미니프로그램을 디버깅하는 방법의 전자장비(1200)는, 입력장치(1203) 및 출력장치(1204)를 더 포함할 수 있다. 프로세서(1201), 메모리(1202), 입력장치(1203) 및 출력장치(1204)는 버스라인 또는 기타 방식으로 연결될 수 있는데, 도 12에서는 버스라인을 통해 연결되는 예를 도시한다.
입력장치(1203)는 입력된 숫자 또는 캐릭터 정보를 수신할 수 있고, 또한 미니프로그램을 디버깅하는 방법의 전자장비(1200)의 사용자 설정 및 기능 제어와 연관된 키 신호 입력을 생성할 수 있으며, 예를 들어, 터치 스크린, 키 패드, 마우스, 트랙 패드, 터치 패드, 인디케이터 로드, 하나 또는 복수의 마우스 버튼, 트랙 볼, 콘트롤러 로드 등과 같은 입력 장치를 포함할 수 있다. 출력장치(1204)는 표시 장치, 보조 조명 장치(예를 들어, LED) 및 햅틱 피드백 장치(예를 들어, 진동모터) 등을 포함할 수 있다. 상기 표시 장치는 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이 및 플라스마 디스플레이를 포함할 수 있는데, 이에 한정되지는 않는다. 일부 실시 형태에 따르면, 표시 장치는 터치 스크린일 수 있다.
여기서 설명한 시스템 및 기술의 다양한 실시 형태는 디지털 전자 회로 시스템, 집적 회로 시스템, 주문형 ASIC(주문형 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합으로 구현될 수 있다. 이러한 다양한 실시 형태는 하나 또는 복수의 컴퓨터 프로그램을 통해 구현될 수 있고, 상기 하나 또는 복수의 컴퓨터 프로그램은 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템에서 실행 및/또는 해석될 수 있으며, 상기 프로그램 가능 프로세서는 전용 또는 범용 프로그램 가능 프로세서일 수 있고, 저장 시스템, 적어도 하나의 입력장치, 및 적어도 하나의 출력장치로부터 데이터 및 명령을 수신하고, 데이터 및 명령을 저장 시스템, 적어도 하나의 입력장치, 및 적어도 하나의 출력장치로 송신할 수 있다.
이러한 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 응용 프로그램, 또는 코드라고도 함)은 프로그램 가능 프로세서의 기계언어 명령을 포함하고, 하이 라벨 프로시저 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블러/기계언어를 사용하여 이러한 컴퓨터 프로그램을 실시할 수 있다. 본 명세서에서 사용되는 "기계 판독가능 매체" 및 "컴퓨터 판독가능 매체" 등과 같은 용어는, 기계언어 명령 및/또는 데이터를 프로그램 가능 프로세서의 임의의 컴퓨터 프로그램 제품, 장비, 및/또는 장치(예를 들어, 디스크, CD-ROM, 메모리, 프로그램 가능 논리 장치(PLD))에 제공하고, 기계 판독 가능 신호로서의 기계언어 명령을 수신하는 기계 판독가능 매체를 포함한다. "기계 판독가능 신호"라는 용어는 기계언어 명령 및/또는 데이터를 프로그램 가능 프로세서에 제공하기 위한 임의의 신호를 의미한다.
사용자와의 인터액션을 제공하기 위해서는, 컴퓨터를 통해 본 명세서에서 설명한 시스템 및 기술을 구현할 수 있는데, 상기 컴퓨터는, 사용자에게 정보를 표시하기 위한 표시 장치(예를 들어, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터), 및 사용자가 상기 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙 볼)를 포함한다. 기타 유형의 디바이스도 사용자와의 인터액션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 센싱 피드백(예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백)일 수 있고, 임의의 형태(소리 입력, 음성 입력, 또는 촉각 입력을 포함)로 사용자로부터의 입력을 수신할 수 있다.
본 명세서에서 설명한 시스템 및 기술은, 백 그라운드 부품을 포함하는 컴퓨팅 시스템(예를 들어, 데이터 서버), 또는 미들웨어 부품을 포함하는 컴퓨팅 시스템(예를 들어, 애플리케이션 서버), 또는 프론트 앤드 부품을 포함하는 컴퓨팅 시스템(예를 들어, GUI 또는 웹 브라우저를 갖는 사용자 컴퓨터로서, 사용자는 상기 GUI 또는 상기 웹 브라우저를 통하여 본 명세서에서 설명한 상기 시스템 및 기술의 실시 형태와 인터액션을 할 수 있음), 또는 이러한 백 그라운드 부품, 미들웨어 부품, 또는 프론트 앤드 부품의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 부품은 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들어, 통신 네트워크)을 통해 서로 연결될 수 있다. 통신 네트워크는 예를 들어 근거리 통신망(LAN), 광역 통신망(WAN) 및 인터넷을 포함할 수 있다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있고, 통상적으로 통신 네트워크를 통해 인터액션을 진행한다. 클라이언트와 서버의 관계는 대응하는 컴퓨터에서 실행되고 서로 클라이언트-서버의 관계를 갖는 컴퓨터 프로그램에 의해 생성된다.
본 출원의 실시예의 기술 방안에 따르면, 제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하고, 미니프로그램을 실행하되, 미니프로그램이 각 타겟 디버깅 모듈까지 실행되었을 때 타겟 디버깅 모듈을 중단하며, 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성한다. 타겟 디버깅 모듈까지 실행되었을 때 중단되어 디버깅 명령을 대기하고, 디버깅 명령을 수신한 후 타겟 디버깅 모듈을 웨이크업하고 디버깅함으로써, 미니프로그램의 브레이크 포인트 디버깅이 가능하고, 디버깅 효율을 개선할 수 있다.
상기에서 설명한 다양한 프로세스를 사용하여 각 단계의 순서를 조정하거나, 일부 단계를 추가 또는 삭제할 수 있다는 점을 이해하여야 한다. 예를 들어, 본 출원에 개시된 기술방안이 원하는 결과를 구현할 수 있는 한, 본 출원에 기재된 다양한 단계는 병렬적으로 또는 순차적으로, 또는 서로 다른 순서로 실행될 수 있고, 본 출원은 이에 대해 특별히 한정하지 않는다.
본 출원의 보호범위는 상기 다양한 실시 형태에 의해 제한되지 않는다. 당업자라면, 설계 요구 및 기타 요소에 의해, 다양한 수정, 조합, 서브 조합 및 교체가 이루어질 수 있음을 이해할 것이다. 본 출원의 취지 및 원칙내에서 이루어진 임의의 수정, 등가 교체 및 개선 등은 모두 본 출원의 보호범위에 속한다.

Claims (17)

  1. 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 방법으로서,
    제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하는 단계,
    상기 미니프로그램을 실행하되, 상기 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때 상기 타겟 디버깅 모듈을 중단하는 단계, 및
    제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성하는 단계
    를 포함하는, 미니프로그램을 디버깅하는 방법.
  2. 제1항에 있어서,
    수신된 제2 디버깅 명령을 저장하고, 상기 미니프로그램을 웨이크업하기 위한 웨이크업 명령을 생성하는 단계를 더 포함하되,
    상기 제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하는 것은,
    상기 웨이크업 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하는 것, 및
    저장된 제2 디버깅 명령을 취득하고, 저장된 제2 디버깅 명령에 따라 웨이크업된 타겟 디버깅 모듈을 디버깅하는 것
    을 포함하는, 미니프로그램을 디버깅하는 방법.
  3. 제1항에 있어서,
    상기 미니프로그램이 상기 타겟 디버깅 모듈까지 실행된 것을 확정하였을 경우, 상기 타겟 디버깅 모듈을 중단하기 전에 상기 미니프로그램의 현재 실행 데이터를 송신하는 단계를 더 포함하는, 미니프로그램을 디버깅하는 방법.
  4. 제1항에 있어서,
    디버깅 결과를 피드백하고, 상기 타겟 디버깅 모듈을 다시 중단하여 다음 제2 디버깅 명령을 대기하는 단계, 및
    수신된 다음 제2 디버깅 명령에 따라 계속하여 상기 타겟 디버깅 모듈을 디버깅하는 단계
    를 더 포함하는, 미니프로그램을 디버깅하는 방법.
  5. 제1항에 있어서,
    상기 타겟 디버깅 모듈은 복수개이고,
    상기 방법은,
    현재의 타겟 디버깅 모듈의 디버깅 결과를 피드백하고, 현재의 타겟 디버깅 모듈을 중단하여 제3 디버깅 명령을 대기하는 단계, 및
    수신된 제3 디버깅 명령에 따라 현재의 타겟 디버깅 모듈을 종료하고, 다음 타겟 디버깅 모듈까지 계속하여 상기 미니프로그램을 실행하는 단계
    를 더 포함하는, 미니프로그램을 디버깅하는 방법.
  6. 제1항에 있어서,
    상기 타겟 디버깅 모듈은 복수개이고,
    상기 방법은,
    현재의 타겟 디버깅 모듈의 디버깅 결과를 피드백하고, 현재의 타겟 디버깅 모듈을 중단하여 제4 디버깅 명령을 대기하는 단계, 및
    수신된 제4 디버깅 명령에 따라 현재의 타겟 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 상기 제1 디버깅 명령이 다시 수신될 때까지 계속하여 상기 미니프로그램을 실행하는 단계
    를 더 포함하는, 미니프로그램을 디버깅하는 방법.
  7. 제6항에 있어서,
    타겟 디버깅 모듈에 대한 선택을 취소한 후, 타겟 디버깅 모듈에 대한 선택을 취소하였음을 나타내는 해제 메시지를 송신하는 단계를 더 포함하는, 미니프로그램을 디버깅하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 타겟 디버깅 모듈을 선택하는 것, 상기 미니프로그램을 실행하는 것 및 타겟 디버깅 모듈을 디버깅하는 것은 제1 스레드에서 진행되고, 상기 제1 디버깅 명령 및 상기 제2 디버깅 명령은 제2 스레드에서 수신되며, 상기 디버깅 결과는 제2 스레드에서 피드백되는, 미니프로그램을 디버깅하는 방법.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 미니프로그램은 시뮬레이션 환경 또는 리얼 환경에서 실행되는, 미니프로그램을 디버깅하는 방법.
  10. 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 방법으로서,
    상기 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 지시하는 제1 디버깅 명령을 송신하는 단계,
    상기 미니프로그램이 상기 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 상기 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신하는 단계, 및
    상기 타겟 테스트 모듈의 디버깅 결과를 수신하는 단계
    를 포함하는, 미니프로그램을 디버깅하는 방법.
  11. 제10항에 있어서,
    피드백된 디버깅 결과를 수신한 것에 응답하여, 제3 디버깅 명령 및 제4 디버깅 명령 중 적어도 하나를 송신하는 단계를 더 포함하되,
    상기 제3 디버깅 명령은 현재의 타겟 디버깅 모듈을 종료하고, 다음 타겟 디버깅 모듈까지 계속하여 상기 미니프로그램을 실행하도록 지시하고,
    상기 제4 디버깅 명령은 현재의 타겟 디버깅 모듈을 종료하고, 타겟 디버깅 모듈에 대한 선택을 취소하고, 상기 제1 디버깅 명령이 다시 수신될 때까지 계속하여 상기 미니프로그램을 실행하도록 지시하는, 미니프로그램을 디버깅하는 방법.
  12. 제10항에 있어서,
    타겟 디버깅 모듈에 대한 선택을 취소하였음을 나타내는 해제 메시지를 수신하는 단계를 더 포함하는, 미니프로그램을 디버깅하는 방법.
  13. 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 장치로서,
    제1 디버깅 명령에 따라 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하는 선택 모듈,
    상기 미니프로그램을 실행하되, 상기 미니프로그램이 타겟 디버깅 모듈까지 실행되었을 때 상기 타겟 디버깅 모듈을 중단하는 제1 중단 모듈, 및
    제2 디버깅 명령에 따라 중단된 타겟 디버깅 모듈을 웨이크업하여 디버깅하고, 디버깅 결과를 생성하는 제1 디버깅 모듈
    을 포함하는, 미니프로그램을 디버깅하는 장치.
  14. 복수의 디버깅 모듈을 포함하는 미니프로그램을 디버깅하는 장치로서서,
    상기 복수의 디버깅 모듈 중 적어도 하나의 디버깅 모듈을 타겟 디버깅 모듈로 선택하도록 지시하는 제1 디버깅 명령을 송신하는 제1 송신 모듈,
    상기 미니프로그램이 상기 타겟 디버깅 모듈까지 실행되었을 때의 실행 데이터를 수신한 것에 응답하여, 상기 타겟 디버깅 모듈을 디버깅하기 위한 제2 디버깅 명령을 송신하는 제2 송신 모듈, 및
    상기 타겟 테스트 모듈의 디버깅 결과를 수신하는 제1 수신 모듈
    을 포함하는, 미니프로그램을 디버깅하는 장치.
  15. 전자장비로서,
    적어도 하나의 프로세서, 및
    상기 적어도 하나의 프로세서에 통신가능하게 연결되는 메모리
    를 포함하되, 상기 메모리에는 상기 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어 있고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행됨으로써, 상기 적어도 하나의 프로세서로 하여금 제1항 내지 제9항 중 어느 한 항의 방법을 실행하거나, 또는 제10항 내지 제12항 중 어느 한 항의 방법을 실행하도록 하는, 전자장비.
  16. 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 명령은 프로세서로 하여금, 제1항 내지 제9항 중 어느 한 항의 방법을 실행하거나, 또는 제10항 내지 제12항 중 어느 한 항의 방법을 실행하도록 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 컴퓨터 프로그램을 포함한 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 프로그램이 프로세서에 의해 실행될 경우, 제1항 내지 제9항 중 어느 한 항의 방법을 구현하거나, 또는 제10항 내지 제12항 중 어느 한 항의 방법을 구현하는, 컴퓨터 프로그램 제품.
KR1020217041768A 2020-11-16 2021-05-06 미니프로그램을 디버깅하는 방법, 장치, 전자장비, 저장 매체 및 컴퓨터 프로그램 KR20220002690A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202011282569.3A CN112214416B (zh) 2020-11-16 2020-11-16 调试小程序的方法、装置、电子设备和存储介质
CN202011282569.3 2020-11-16
PCT/CN2021/091891 WO2022100033A1 (zh) 2020-11-16 2021-05-06 调试小程序的方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
KR20220002690A true KR20220002690A (ko) 2022-01-06

Family

ID=79347550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217041768A KR20220002690A (ko) 2020-11-16 2021-05-06 미니프로그램을 디버깅하는 방법, 장치, 전자장비, 저장 매체 및 컴퓨터 프로그램

Country Status (4)

Country Link
US (1) US20220374331A1 (ko)
EP (1) EP4027246B1 (ko)
JP (1) JP7241931B2 (ko)
KR (1) KR20220002690A (ko)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2321019A1 (en) * 2000-09-27 2002-03-27 Ibm Canada Limited-Ibm Canada Limitee Capturing snapshots of a debuggee's state during a debug session
US7363617B2 (en) * 2002-05-23 2008-04-22 International Business Machines Corporation Database breakpoint apparatus and method
US8219980B2 (en) * 2007-01-10 2012-07-10 International Business Machines Corporation Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data
JP5212508B2 (ja) * 2011-03-15 2013-06-19 オムロン株式会社 デバッグ装置
US8522213B2 (en) * 2011-05-12 2013-08-27 International Business Machines Corporation Debugger and debugging methods using breakpoints conditioned on the static identity of data
US10613882B2 (en) * 2016-10-14 2020-04-07 Seagate Technology Llc Active drive API
CN110781080B (zh) * 2019-10-11 2023-06-30 北京小米移动软件有限公司 程序调试方法及装置、存储介质
CN110837473B (zh) * 2019-11-07 2023-08-22 腾讯科技(深圳)有限公司 应用程序调试方法、装置、终端及存储介质
CN111176986B (zh) * 2019-12-16 2023-12-29 金蝶软件(中国)有限公司 线程脚本调试方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
JP7241931B2 (ja) 2023-03-17
US20220374331A1 (en) 2022-11-24
JP2023504958A (ja) 2023-02-08
EP4027246A1 (en) 2022-07-13
EP4027246B1 (en) 2023-12-06
EP4027246A4 (en) 2022-09-21

Similar Documents

Publication Publication Date Title
US11113187B2 (en) Mock server for testing
CN109800173B (zh) 程序调试方法、装置及存储介质
US8671393B2 (en) Collaborative software debugging in a distributed system with client-specific dynamic breakpoints
US8656360B2 (en) Collaborative software debugging in a distributed system with execution resumption on consensus
US20120084758A1 (en) Collaborative Software Debugging In A Distributed System With Client-Specific Variable Evaluation
US20120278790A1 (en) Collaborative Software Debugging In A Distributed System With Real-Time Variable Modification Indicators
US8904356B2 (en) Collaborative software debugging in a distributed system with multi-member variable expansion
US9411709B2 (en) Collaborative software debugging in a distributed system with client-specific event alerts
US9009673B2 (en) Collaborative software debugging in a distributed system with collaborative step over operation
JP7030177B2 (ja) テスト方法及び装置
CN112235417B (zh) 调试指令的发送方法、装置
US8850397B2 (en) Collaborative software debugging in a distributed system with client-specific display of local variables
WO2022100033A1 (zh) 调试小程序的方法、装置、电子设备和存储介质
EP4075283A1 (en) Method and apparatus for continuous integration testing
CN110501918A (zh) 智能家电控制方法、装置、电子设备和存储介质
KR20210108341A (ko) 브라우저의 디스플레이 검증 방법, 장치, 컴퓨터 기기 및 저장 매체
US20120102467A1 (en) Collaborative Software Debugging In A Distributed System With Client-Specific Display Location Upon Event Notification
CN111611168A (zh) 联调测试方法、装置及系统
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
CN111625949A (zh) 一种仿真引擎系统、仿真处理方法、设备和介质
KR20220002690A (ko) 미니프로그램을 디버깅하는 방법, 장치, 전자장비, 저장 매체 및 컴퓨터 프로그램
CN111399811A (zh) 可视化页面开发的方法、装置、设备以及存储介质
CN108737337B (zh) 设备处理方法、装置、服务器及系统
CN112988588B (zh) 客户端软件调试方法、装置、存储介质及电子设备
CN114416578A (zh) 测试方法和装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal